Kembali ke Portfolio

Laporan Praktikum: Manajemen Users (CRUD)

Laravel Framework Authentication, Templating, & Resource Controller

Pemrograman Web

Laporan Praktikum 9: Implementasi Autentikasi dan Manajemen Data Pengguna

Mata Kuliah: Pemrograman Web • Universitas Andalas

Pendahuluan

Praktikum ke-9 ini membahas tentang implementasi fitur autentikasi bawaan dari ekosistem Laravel (Laravel UI Bootstrap), kustomisasi skema tabel pengguna menggunakan Database Migration, integrasi kerangka antarmuka administrator pihak ketiga (SB Admin 2), serta pembangunan modul manajemen data berbasis Resource Controller demi mencapai alur kerja operasi berformat lengkap CRUD (Create, Read, Update, Delete).


1. Inisialisasi Proyek & Konfigurasi Auth Scaffolding

Langkah operasional pertama diawali dengan menginstal dependensi installer global Laravel, dilanjutkan dengan perintah eksekusi inisialisasi direktori instalasi proyek web baru bernama laravel-sisfo di dalam environment local server Apache htdocs:

composer global require "laravel/installer"
laravel new laravel-sisfo
Arahkan Path dan Command New Upgrade Laravel Installer

Selama proses pembuatan struktur, sistem memberikan opsi pemilihan Starter Kit dan sistem pengujian. Penulis memilih opsi tanpa starter kit (None) karena integrasi visual Bootstrap akan ditangani secara terpisah menggunakan pustaka UI eksternal, dengan memilih Pest sebagai testing framework bawaannya.

Pemilihan Starter Kit None Pemilihan Testing Framework Pest

Tahap penataan berikutnya adalah menyesuaikan variabel konektivitas basis data pada file konfigurasi lingkungan .env. Pengaturan diatur menggunakan driver SQLite (sqlite) dengan penamaan skema database laravel_sisfo.

Konfigurasi Database .env SQLite

Aplikasi kemudian diuji menggunakan server lokal artisan. Antarmuka welcome page Laravel berhasil diekstrak dan disajikan secara normal pada alamat port 127.0.0.1:8000.

php artisan serve
Command php artisan serve Halaman Selamat Datang Default Laravel

Untuk mempercepat pembuatan fitur pendaftaran dan autentikasi, penulis memasang dependensi paket laravel/ui, diikuti dengan menjalankan generator perintah Bootstrap berparameter otorisasi penuh:

composer require laravel/ui
php artisan ui bootstrap --auth
Instalasi package laravel/ui via composer Proses locking versi laravel ui Eksekusi ui bootstrap auth scaffolding

Sebagai bagian dari instruksi kompilasi modul frontend baru, perintah manajemen paket npm install dijalankan untuk mengunduh modul aset, kemudian dilanjutkan dengan menjalankan perintah npm run dev demi mengaktifkan server build Vite secara langsung (real-time).

npm install
npm run dev
Command npm install aset frontend Vite server runtime ready

Selanjutnya dilakukan eksekusi struktur tabel awal bawaan framework ke database menggunakan perintah migrasi. Halaman login (/login) dan registrasi (/register) kini siap diakses secara normal di peramban web dengan tampilan Bootstrap standar.

php artisan migrate
Artisan Migrate default sukses Form login otorisasi default Form registrasi pengguna baru default

2. Kustomisasi Skema Tabel Pengguna & Database Seeding

Penulis mencoba melakukan pendaftaran akun pengujian pertama bernama Dede Bintang. Akun berhasil dibuat dan otomatis dialihkan masuk ke dalam komponen beranda otorisasi internal (/home).

Tampilan dashboard sukses login

Untuk memverifikasi integritas data, penulis memeriksa baris record tabel users yang baru tersimpan melalui platform administrasi basis data phpMyAdmin. Informasi data masukan, enkripsi sandi, beserta timestamp tercatat secara presisi.

Isi baris record tabel users di phpmyadmin Skema kolom bawaan tabel users

Sesuai spesifikasi kebutuhan Sistem Informasi Sekolah, skema default tabel ini perlu dimodifikasi dengan menambahkan tiga kolom baru yaitu username, level, dan status. Penulis menghasilkan berkas modifikasi skema lewat perintah migrasi kustom:

php artisan make:migration costum_table_users
Generate file migration custom_table_users Letak file migrasi pada struktur folder

Berkas baru tersebut kemudian dimodifikasi pada bagian blok fungsi metode up() dan fungsi rollback metode down() seperti pada contoh kode program berikut:

Source code isi file migrasi penambahan kolom

Perintah migrasi dijalankan ulang untuk memperbarui skema database. Setelah berhasil dieksekusi, kolom tambahan berupa username, level, dan enum status terstruktur dengan benar pada baris bawah tabel users di phpMyAdmin.

php artisan migrate
Eksekusi artisan migrate sukses Struktur tabel users yang telah dikustomisasi

Untuk mempermudah proses pengisian data pengguna berlevel administrator secara instan tanpa registrasi manual, dibuat sebuah berkas komponen seeder baru melalui terminal:

php artisan make:seeder AdminSeeder
Generate AdminSeeder file

Pada file AdminSeeder.php, dituliskan logika instansiasi objek model pengguna baru dengan parameter level yang dibungkus ke dalam format JSON (json_encode) demi mendukung skalabilitas hak akses majemuk (multiple roles):

Implementasi kode program seeder pengguna admin

Proses seeding dijalankan dengan memanggil sub-class spesifik tersebut melalui terminal CLI:

php artisan db:seed --class=AdminSeeder
Eksekusi db seed sukses

3. Integrasi Template & Layouting Antarmuka Admin (SB Admin 2)

Agar tampilan antarmuka terkesan profesional, penulis melakukan proses slicing template gratis SB Admin 2 berbasis framework Bootstrap 4. Langkah awal dilakukan dengan menyalin seluruh direktori folder aset statis bawaan template (CSS, JS, Vendor) ke dalam folder public/sbadmin milik Laravel.

Halaman unduh SB Admin 2 StartBootstrap Penyusunan folder aset di public/sbadmin

Selanjutnya dilakukan perombakan berkas layout master bawaan paket auth (resources/views/layouts/app.blade.php) untuk memuat kerangka dasar HTML halaman login SB Admin 2, dengan memanggil seluruh berkas aset menggunakan helper bawaan Laravel {{ asset(...) }}.

Konfigurasi tag head link asset app.blade

Guna merancang halaman kerja internal setelah login, penulis menerapkan teknik modulasi antarmuka dengan membuat sebuah file layout utama baru bernama main.blade.php di dalam folder layouts.

Pembuatan file main.blade.php layouts Struktur tag pembuka main layout

Struktur layout dashboard yang besar dipecah ke dalam beberapa file parsial menggunakan direktif blade @include(). Penulis membuat file sidebar.blade.php untuk menampung baris kode komponen navigasi menu samping:

Pembuatan berkas blade komponen sidebar Modifikasi item menu navigasi sidebar

Hal yang sama diterapkan pada komponen bar navigasi atas melalui pembuatan file topbar.blade.php, yang memuat potongan kode pencarian, notifikasi sistem, dan menu profil pengguna:

Pembuatan berkas blade komponen topbar Source code struktur navbar atas topbar

Komponen view beranda (home.blade.php) diatur kembali agar mewarisi layout utama baru dengan menambahkan fungsi direktif pewarisan @extends('layouts.main').

Pewarisan kerangka master layout pada home blade

Hasil pengujian render pada browser menunjukkan layout dashboard admin berhasil memuat kombinasi sidebar biru minimalis khas SB Admin 2 secara fungsional dan responsif.

Hasil render antarmuka dashboard utama

4. Pembuatan Resource Controller & Alur Kerja CRUD Manajemen Users

Inti fitur pengerjaan modul manajemen data dilakukan dengan membuat sebuah file controller terintegrasi metode resource lewat satu instruksi praktis pada terminal:

php artisan make:controller UserController --resource
Generate UserController via resource command Letak controller baru pada pohon direktori Blueprint fungsi bawaan resource controller

Di bawah ini adalah rincian pengerjaan alur operasi logika CRUD data pengguna yang diimplementasikan ke dalam metode fungsi UserController beserta pembuatan file komponen view-nya:

A. Operasi CREATE (Tambah Data Pengguna Baru)

Pada tindakan fungsi create(), instruksi diarahkan untuk memanggil halaman form input data pengguna (user.create). Berkas view tersebut diletakkan di dalam folder terpisah bernama resources/views/user/create.blade.php.

Penulisan return view create Letak folder views kustom user Pewarisan layout master pada form create

Form tambah user dibangun menggunakan elemen form Bootstrap grid, lengkap dengan komponen selektor bertipe list-box multiple select untuk menentukan peran (level) jabatan pengguna aplikasi.

Rancangan form input data name dan email Pengujian render view halaman create Visualisasi form input pengguna baru lengkap

Proses penyimpanan data ditangani oleh tindakan fungsi store(). Fungsi menangkap parameter input dari form masukan, melakukan hashing pada field kata sandi (Hash::make), mengonversi nilai array level ke format teks JSON via json_encode, lalu menyimpannya ke database sebelum dialihkan kembali menuju halaman indeks utama dengan membawa status flash data.

Logika pengisian record objek pengguna baru

B. Operasi READ (Menampilkan Tabel Daftar Pengguna)

Metode fungsi index() bertugas mengambil seluruh koleksi baris data dari database menggunakan metode Eloquent model User::all(), kemudian mengirimkannya ke file view indeks.

Logika penarikan seluruh data users

Pada file index.blade.php, data pengguna diulang ke dalam bentuk baris-baris tabel HTML secara dinamis menggunakan perulangan direktif @foreach ($users as $user).

Struktur tabel data dinamis index blade

C. Operasi UPDATE (Mengubah Data Pengguna)

Untuk menangani proses pengeditan data, tindakan fungsi edit($id) dipasang perintah penarikan data pengguna spesifik berdasarkan parameter ID unik menggunakan pengaman kegagalan fatal query User::findOrFail($id).

Logika pencarian objek user berdasarkan ID

Form edit (edit.blade.php) dirancang mirip dengan form tambah data, namun dilengkapi dengan pengiriman metode tersembunyi <input type="hidden" name="_method" value="PUT"> serta otomatis mengisi kolom input form (old value/current data binding) sesuai data pengguna yang akan disunting.

Struktur tag form dengan method spoofing PUT Visualisasi form edit dengan data binding user admin

Logika pembaruan data diproses di dalam tindakan fungsi update(). Data nama pengguna dan level hak akses diperbarui, lalu disimpan kembali ke tabel basis data lewat pemanggilan metode interaksi $user->save().

Logika penulisan update data pengguna

5. Hasil Pengujian Akhir Aplikasi

Tahap akhir praktikum diverifikasi dengan melakukan uji coba simulasi penuh terhadap fitur manipulasi data pengguna langsung pada peramban web:

Penulis mencoba menyunting record data pengguna "admin" menjadi nama kustom baru berupa "abinnnnnn" berlevel ADMIN pada halaman form edit user:

Pengujian pengisian form edit modifikasi nama pengguna

Setelah menekan tombol "Simpan", sistem berhasil memproses perubahan data tersebut di latar belakang dan secara otomatis mengalihkan pengguna kembali ke halaman indeks utama. Halaman web sukses menampilkan banner pesan sukses hijau kustom bertuliskan "User berhasil diubah", serta memperbarui isi data pada baris tabel pengguna dengan benar.

Tampilan tabel data pengguna hasil operasi CRUD sukses

Kesimpulan

Melalui praktikum ke-9 ini, pemanfaatan blueprint Resource Controller terbukti mampu memangkas waktu penulisan kode perutean (routing) dan penataan struktur logika fungsi backend secara signifikan di Laravel[cite: 592]. Di sisi lain, pembagian tata letak antarmuka blade ke dalam beberapa file modular parsial (layouts, sidebar, topbar) memberikan tingkat fleksibilitas yang tinggi dalam proses pemeliharaan komponen web di masa mendatang[cite: 499].