Laravel 12 yaitu framework pengembangan web berbasis bahasa PHP modern yang menggunakan pola arsitektur MVC (Model-View-Controller). Pola ini memisahkan logika pemrosesan data (Model), manajemen tampilan antarmuka (View), dan pengendali alur aplikasi (Controller), sehingga mempermudah kolaborasi kode dalam skala besar.
Sistem autentikasi (*User Authentication*) sangat penting digunakan untuk membatasi hak akses halaman admin di sebuah sistem informasi. Melalui package laravel/ui, pengembang dapat memasang fondasi keamanan siap pakai berbasis framework CSS Bootstrap. Hal ini memangkas waktu pengerjaan form login, registrasi, enkripsi kata sandi, hingga penanganan otentikasi session user.
Blade merupakan mesin template (*Template Engine*) internal bawaan Laravel yang menawarkan fitur modularitas layout yang efisien. Dengan konsep *slicing layout*, baris kode HTML global yang besar dapat dipecah secara rapi menjadi sub-views statis (seperti sidebar dan topbar) menggunakan perintah direktif @include(), sedangkan area dinamis ditampung menggunakan tag direktif @yield() atau @extends(). Hal ini mendukung prinsip DRY (*Don't Repeat Yourself*).
Database Migration berperan layaknya pengontrol versi (*version control*) bagi skema database, memungkinkan pembuatan struktur tabel didefinisikan secara deklaratif lewat kode PHP tanpa perlu menyentuh SQL mentah. Sementara itu, Database Seeder melengkapinya dengan menyediakan mekanisme otomasi injeksi record data atau akun pengurus (Administrator) awal ke dalam tabel database.
composer create-project laravel/laravel laravel-sisfo
Setelah proses selesai, masuklah ke folder project dengan mengetikkan perintah cd laravel-sisfo. Jalankan server lokal bawaan lewat terminal:
php artisan serve
laravel_sisfo di phpMyAdmin. Selanjutnya, kita buka file konfigurasi lingkungan lingkungan .env yang berada di root direktori project, lalu sesuaikan konfigurasi koneksi pangkalan datanya:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_sisfo
DB_USERNAME=root
DB_PASSWORD=
laravel/ui menggunakan package manager Composer:
composer require laravel/ui
Setelah terunduh, buatlah komponen scaffolding autentikasi bawaan yang terintegrasi penuh dengan kerangka frontend Bootstrap melalui perintah Artisan:
php artisan ui bootstrap --auth
npm install && npm run dev
database/migrations/xxxx_xx_xx_create_users_table.php. Sesuai panduan modul, modifikasi method up() dengan menambahkan kolom baru: username, level, dan status.
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('username')->unique(); // Tambahan kolom username
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->string('level'); // Tambahan kolom level
$table->enum('status', ['ACTIVE', 'INACTIVE'])->default('ACTIVE'); // Tambahan kolom status
$table->rememberToken();
$table->timestamps();
});
Setelah file disimpan, jalankan migrasi database ke dalam MySQL lewat terminal:
php artisan migrate
php artisan make:seeder UserSeeder
Buka berkas file file hasil generate di folder database/seeders/UserSeeder.php, kemudian tuliskan baris instansiasi objek model User di dalam method run():
public function run(): void
{
$admin = new \App\Models\User;
$admin->username = "admin";
$admin->name = "Administrator";
$admin->email = "admin@sisfo.com";
$admin->level = "ADMIN";
$admin->password = \Hash::make("12345678");
$admin->status = "ACTIVE";
$admin->save();
$this->command->info("User Admin berhasil ditambahkan!");
}
Buka berkas file utama pengatur seeder database/seeders/DatabaseSeeder.php, daftarkan kelas seeder yang baru saja Anda buat:
public function run(): void
{
$this->call([
UserSeeder::class,
]);
}
Jalankan perintah pengisian database lewat jendela terminal:
php artisan db:seed
app/Http/Controllers/Auth/LoginController.php, lalu tambahkan method berikut:
public function username()
{
return 'username';
}
Buka file tampilan form login resources/views/auth/login.blade.php, carilah baris input teks email dan ubah seluruh atribut komponen name, id, serta error-handling-nya menjadi variabel username.
public/sbadmin/.
layouts di dalam direktori resources/views/, lalu pecah struktur layout halaman global menjadi tiga bagian file:
sidebar.blade.php (Menampung elemen menu navigasi vertikal)topbar.blade.php (Menampung elemen navigasi atas dan menu profil pengguna)main.blade.php (Bertindak sebagai kerangka induk utama yang menyatukan komponen layout)
Berikut adalah kerangka utama dari file file master induk layout main.blade.php:
Dashboard - Sistem Informasi Sekolah
@include('layouts.sidebar')
@include('layouts.topbar')
@yield('content')
php artisan make:controller UserController --resource
Buka rute pemanggilan url pada file routes/web.php, daftarkan rute resource dan batasi hak aksesnya dengan menambahkan baris instruksi middleware keamanan login:
use App\Http\Controllers\UserController;
Auth::routes();
Route::get('/home', [App\Http\Controllers\HomeController::class, 'index'])->name('home');
Route::middleware(['auth'])->group(function () {
Route::resource('users', UserController::class);
});
app/Http/Controllers/UserController.php, isikan kode logika manipulasi database pada method CRUD internal sebagai berikut:
public function index()
{
$users = \App\Models\User::all();
return view('users.index', compact('users'));
}
public function create()
{
return view('users.create');
}
public function store(Request $request)
{
$request->validate([
'username' => 'required|unique:users',
'name' => 'required',
'email' => 'required|email|unique:users',
'password' => 'required|min:8',
'level' => 'required',
]);
$user = new \App\Models\User;
$user->username = $request->username;
$user->name = $request->name;
$user->email = $request->email;
$user->level = $request->level;
$user->password = \Hash::make($request->password);
$user->status = "ACTIVE";
$user->save();
return redirect()->route('users.index')->with('status', 'User Berhasil Ditambahkan');
}
public function edit($id)
{
$user = \App\Models\User::findOrFail($id);
return view('users.edit', compact('user'));
}
public function update(Request $request, $id)
{
$user = \App\Models\User::findOrFail($id);
$user->name = $request->name;
$user->level = $request->level;
$user->status = $request->status;
if($request->password) {
$user->password = \Hash::make($request->password);
}
$user->save();
return redirect()->route('users.index')->with('status', 'User Berhasil Diupdate');
}
public function destroy($id)
{
$user = \App\Models\User::findOrFail($id);
$user->delete();
return redirect()->route('users.index')->with('status', 'User Berhasil Dihapus');
}
users di dalam lokasi resources/views/. Ciptakan 3 berkas file utama tampilan sebagai berikut:
index.blade.php)
@extends('layouts.main')
@section('content')
Manajemen Data Pengguna (Users)
@if(session('status'))
{{ session('status') }}
@endif
Tambah Pengguna Baru
Username
Nama Lengkap
Email
Akses Level
Aksi
@foreach($users as $user)
{{ $user->username }}
{{ $user->name }}
{{ $user->email }}
{{ $user->level }}
Edit
@endforeach
@endsection
2. Berkas Halaman Input Form Tambah Data (create.blade.php)
@extends('layouts.main')
@section('content')
Tambah User Baru
@endsection
3. Berkas Halaman Input Form Edit Data (edit.blade.php)
@extends('layouts.main')
@section('content')
Edit Profil User
@endsection
Berdasarkan seluruh alur pengerjaan praktikum di atas, pengerjaan sistem otentikasi login aplikasi berbasis **Laravel 12** berhasil dibangun dengan menggunakan pustaka eksternal laravel/ui Bootstrap. Sistem keamanan dasar seperti validasi isian input formulir, enkripsi kata sandi menggunakan pustaka bawaan `Hash::make()`, serta pembatasan proteksi rute admin via *middleware auth* telah berfungsi dengan baik tanpa ada kegagalan error.
Kustomisasi pada rancangan file *migration* berhasil menambahkan kolom `username`, `level`, dan `status` ke dalam skema tabel bawaan (users). Melalui pembuatan file kontroler bertipe resource (`UserController`) yang dihubungkan dengan *Resource Routing* pada file web, siklus manipulasi pangkalan data menggunakan fungsionalitas model *Eloquent ORM* (CRUD data user) telah berhasil dikerjakan dan diuji coba melalui antarmuka web browser.
Penerapan modularisasi komponen view template dashboard **SB Admin 2** menggunakan arsitektur Blade engine (Slicing View) berhasil diimplementasikan secara terstruktur. Dengan membagi elemen halaman menjadi berkas layout sub-view statis terpisah seperti `sidebar.blade.php` dan `topbar.blade.php`, waktu pengelolaan serta pemeliharaan baris kode visual aplikasi dapat dilakukan jauh lebih cepat tanpa menuliskan kode yang berulang.
Berdasarkan rangkaian pengerjaan modul Report 4 ini, dapat diambil kesimpulan bahwa framework Laravel 12 menyediakan ekosistem perkakas pengembangan web modern berskala besar yang sangat handal, efisien, dan juga aman.
Penggunaan package laravel/ui Bootstrap terbukti mempermudah percepatan pembuatan sistem proteksi otentikasi siap pakai secara teratur. Dipadukan bersama teknik pemotongan layout (*Slicing View*) berbasis keunggulan mesin template Blade, pengembang mampu mengorganisasikan file frontend aplikasi secara rapi, dinamis, serta sangat mudah untuk dikembangkan di kemudian hari.