Authentication Flow & Validasi
Sistem Haflah menggunakan mekanisme multi-authentication dengan pemisahan Controller namun menggunakan guard bawaan Laravel (web).
1. Alur Login Admin (Staff)
Staff (Superadmin, Admin, Operator, Walikelas) melakukan login melalui rute /admin/login.
- Controller:
App\Http\Controllers\Auth\AdminLoginController - Validasi Input:
username: Required, Stringpassword: Required, String
- Kondisi Login:
- User harus berstatus aktif (
is_active = true). - User harus memiliki relasi role di mana
is_staff = true. - Jika username / password salah, mengembalikan pesan: "Username atau password salah."
- User harus berstatus aktif (
- Redirect: Jika berhasil login, diarahkan ke
route('admin.dashboard'). Jika pengguna yang sudah login mengakses kembali halaman login, mereka akan otomatis diredirect sesuai hak aksesnya (Admin ke dashboard admin, Guest ke portal guest).
2. Alur Login Guest (Tamu)
Tamu undangan melakukan login melalui rute /login.
- Controller:
App\Http\Controllers\Auth\GuestLoginController - Validasi Input:
phone: Required, String, maksimal 20 karakter. Jika kosong, mengembalikan pesan: "Nomor telepon wajib diisi."
- Normalisasi Nomor Telepon:
- Karakter non-digit dihapus dari input.
- Jika nomor diawali
8, otomatis diubah menjadi08... - Jika nomor diawali
62, otomatis diubah menjadi0...
- Kondisi Login:
- User harus berstatus aktif (
is_active = true). - User harus memiliki role di mana
is_staff = false(role guest). - Login hanya menggunakan nomor telepon tanpa password.
- Jika tidak ditemukan, mengembalikan pesan: "Nomor telepon tidak terdaftar sebagai tamu undangan."
- User harus berstatus aktif (
- Redirect: Jika berhasil login, diarahkan ke
route('portal.dashboard'). Jika sudah pernah login, redirect dilakukan secara otomatis.
3. Manajemen Session dan Middleware
- Unauthenticated Middleware: Jika sesi pengguna habis (Session Expired) dan mereka mencoba mengakses halaman yang diproteksi, sistem akan otomatis melakukan redirect ke Halaman Utama / Home (
/), diatur melaluibootstrap/app.phpmenggunakan metoderedirectGuestsTo(). - Middleware Khusus Akses:
admin: Memastikan pengguna yang login memiliki role staff (viaAdminMiddleware).superadmin: Membatasi akses eksklusif hanya untuk Superadmin (viaSuperadminMiddleware).hguest: Memastikan pengguna yang login adalah Tamu (viaGuestMiddleware).can: Digunakan bersama permission key (Dynamic RBAC) untuk mengecek hak akses fitur secara spesifik (contoh:can:event.view).