name('checkin.show'); Route::post('/t/{token}', [CheckinController::class, 'submit'])->name('checkin.submit'); // Log masuk Route::get('/login', [AuthController::class, 'showLogin'])->name('login'); Route::post('/login', [AuthController::class, 'login'])->name('login.attempt'); Route::post('/logout', [AuthController::class, 'logout'])->name('logout'); // Lupa kata laluan Route::get('/lupa-katalaluan', [PasswordResetController::class, 'showLinkRequestForm'])->name('password.request'); Route::post('/lupa-katalaluan', [PasswordResetController::class, 'sendResetLink'])->name('password.email'); Route::get('/set-kata-laluan/{token}', [PasswordResetController::class, 'showResetForm'])->name('password.reset'); Route::post('/set-kata-laluan', [PasswordResetController::class, 'reset'])->name('password.update'); Route::middleware(['auth'])->group(function () { // Profil sendiri: tukar kata laluan (semua peranan) Route::get('/profil', [ProfilController::class, 'edit'])->name('profil.edit'); Route::put('/profil/kata-laluan', [ProfilController::class, 'updatePassword'])->name('profil.kata-laluan'); Route::middleware(['role:admin,pengurus'])->group(function () { // Pengurusan sesi taklimat (cipta/tutup/eksport) — bukan kaunter Route::get('/sesi/eksport-kehadiran', EksportKehadiranController::class)->name('sesi.eksport'); Route::get('/sesi/cipta', [SesiTaklimatController::class, 'create'])->name('sesi.create'); Route::post('/sesi', [SesiTaklimatController::class, 'store'])->name('sesi.store'); Route::post('/sesi/{sesi}/toggle', [SesiTaklimatController::class, 'toggle'])->name('sesi.toggle'); // Pengurusan pengguna: admin daftar sesiapa, pengurus daftar kaunter/pengurus DUN sendiri Route::get('/pengguna', [PenggunaController::class, 'index'])->name('pengguna.index'); Route::get('/pengguna/cipta', [PenggunaController::class, 'create'])->name('pengguna.create'); Route::post('/pengguna', [PenggunaController::class, 'store'])->name('pengguna.store'); }); Route::middleware(['role:admin,pengurus,kaunter'])->group(function () { // Lihat sesi & kehadiran (admin, pengurus dun, kaunter — dibatasi DUN sendiri kecuali admin) Route::get('/sesi', [SesiTaklimatController::class, 'index'])->name('sesi.index'); Route::get('/sesi/{sesi}', [SesiTaklimatController::class, 'show'])->name('sesi.show'); Route::get('/sesi/{sesi}/qr', [SesiTaklimatController::class, 'qr'])->name('sesi.qr'); Route::get('/sesi/{sesi}/senarai', [PengurusController::class, 'senarai'])->name('pengurus.senarai'); // Kaunter: rekod nombor siri & serah borang Route::get('/sesi/{sesi}/kaunter', [KaunterController::class, 'index'])->name('kaunter.index'); Route::post('/sesi/{sesi}/kaunter/{kehadiran}/serah', [KaunterController::class, 'serahBorang'])->name('kaunter.serah'); }); });