Files
2026-07-04 14:45:16 +08:00

61 lines
3.5 KiB
PHP

<?php
use App\Http\Controllers\AuthController;
use App\Http\Controllers\CheckinController;
use App\Http\Controllers\EksportKehadiranController;
use App\Http\Controllers\KaunterController;
use App\Http\Controllers\PasswordResetController;
use App\Http\Controllers\PengurusController;
use App\Http\Controllers\PenggunaController;
use App\Http\Controllers\ProfilController;
use App\Http\Controllers\SesiTaklimatController;
use Illuminate\Support\Facades\Route;
Route::redirect('/', '/login');
// Awam: petugas scan QR dan daftar kehadiran
Route::get('/t/{token}', [CheckinController::class, 'show'])->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');
});
});