- Halaman baharu "Saluran Bermasalah": senarai semua saluran dalam DUN (dengan KTM & telefonnya), tanda/buang tanda bermasalah berserta catatan; admin DUN terhad ke DUN sendiri, superadmin semua DUN - Dashboard: baris saluran bermasalah diserlahkan kuning berserta lencana BERMASALAH dan catatan - No. telefon KTM kini ada butang "📞 Call" (tel:) dan "WhatsApp" (wa.me, dinormalkan ke format 60xxxxxxxxx) di dashboard dan halaman saluran bermasalah Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
56 lines
3.0 KiB
PHP
56 lines
3.0 KiB
PHP
<?php
|
|
|
|
use App\Http\Controllers\AuthController;
|
|
use App\Http\Controllers\DashboardController;
|
|
use App\Http\Controllers\EksportKehadiranController;
|
|
use App\Http\Controllers\KehadiranController;
|
|
use App\Http\Controllers\PasswordResetController;
|
|
use App\Http\Controllers\PenggunaController;
|
|
use App\Http\Controllers\ProfilController;
|
|
use App\Http\Controllers\SaluranBermasalahController;
|
|
use Illuminate\Support\Facades\Route;
|
|
|
|
Route::redirect('/', '/login');
|
|
|
|
// 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:superadmin,admin'])->group(function () {
|
|
// Dashboard kehadiran KTM ambil peti undi
|
|
Route::get('/dashboard', [DashboardController::class, 'index'])->name('dashboard');
|
|
|
|
// Tanda hadir / batal
|
|
Route::post('/kehadiran/{assignment}/hadir', [KehadiranController::class, 'hadir'])->name('kehadiran.hadir');
|
|
Route::delete('/kehadiran/{assignment}', [KehadiranController::class, 'batal'])->name('kehadiran.batal');
|
|
|
|
// Muat turun senarai kehadiran (Excel)
|
|
Route::get('/eksport-kehadiran', EksportKehadiranController::class)->name('kehadiran.eksport');
|
|
|
|
// Flag saluran bermasalah
|
|
Route::get('/saluran-bermasalah', [SaluranBermasalahController::class, 'index'])->name('saluran.index');
|
|
Route::post('/saluran-bermasalah', [SaluranBermasalahController::class, 'store'])->name('saluran.store');
|
|
Route::delete('/saluran-bermasalah/{saluran}', [SaluranBermasalahController::class, 'destroy'])->name('saluran.destroy');
|
|
});
|
|
|
|
Route::middleware(['role:superadmin'])->group(function () {
|
|
// Pengurusan pengguna (superadmin sahaja)
|
|
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::delete('/pengguna/{pengguna}', [PenggunaController::class, 'destroy'])->name('pengguna.destroy');
|
|
});
|
|
});
|