106 lines
5.2 KiB
PHP
106 lines
5.2 KiB
PHP
<?php
|
|
|
|
use Illuminate\Support\Facades\Route;
|
|
use App\Http\Controllers\NewsController;
|
|
use App\Http\Controllers\Controllers\AuthController;
|
|
use App\Http\Controllers\Controllers\LaporanController;
|
|
use App\Http\Controllers\Controllers\DashboardController;
|
|
use App\Http\Controllers\Controllers\NewsAdminController;
|
|
use App\Http\Controllers\Controllers\PengajuanController;
|
|
use App\Http\Controllers\Controllers\PerangkatKontroller;
|
|
use App\Http\Controllers\Controllers\AttendanceController;
|
|
use App\Http\Controllers\Controllers\LandingPageController;
|
|
|
|
Route::get('/', [LandingPageController::class, 'index'])->name('home');
|
|
|
|
// Auth Routes
|
|
Route::get('/login', [AuthController::class, 'showLoginForm'])->name('login');
|
|
Route::post('/login', [AuthController::class, 'login']);
|
|
Route::get('/forgot-password', [AuthController::class, 'showForgetPasswordForm'])->name('forget.password');
|
|
Route::post('/forgot-password', [AuthController::class, 'forgotPassword'])
|
|
->name('password.email');
|
|
Route::get('/reset-password/{token}', [AuthController::class, 'showResetPasswordForm'])->name('reset.password');
|
|
Route::post('/reset-password', [AuthController::class, 'resetPassword'])->name('password.update');
|
|
|
|
|
|
// News routes
|
|
Route::get('/news', [NewsController::class, 'index'])->name('news.index');
|
|
Route::get('/news/{slug}', [NewsController::class, 'show'])->name('news.show');
|
|
Route::get('/api/news/categories', [NewsController::class, 'getCategories'])->name('news.categories');
|
|
|
|
Route::get('/attendance/sessions/{sessionId}', [AttendanceController::class, 'showPage'])
|
|
->name('attendance.session.show');
|
|
Route::get('/admin/attendance/sessions/{sessionId}/qrcode', [AttendanceController::class, 'currentToken'])
|
|
->name('admin.attendance.session.qrcode');
|
|
Route::get('/admin/attendance/sessions/{sessionId}/members', [AttendanceController::class, 'members'])
|
|
->name('admin.attendance.session.members');
|
|
Route::post('/admin/attendance/sessions/{sessionId}/rotate', [AttendanceController::class, 'forceRotate'])
|
|
->name('admin.attendance.session.rotate');
|
|
|
|
// Admin routes
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| Protected routes (harus login)
|
|
|--------------------------------------------------------------------------
|
|
*/
|
|
Route::middleware(['auth', 'role:admin'])->group(function () {
|
|
|
|
|
|
// Dashboard
|
|
Route::get('/admin/dashboard', [DashboardController::class, 'index'])->name('admin.dashboard');
|
|
|
|
// Setting Absensi
|
|
Route::get('/admin/attendance/setting', [AttendanceController::class, 'show'])
|
|
->name('admin.attendance.setting.show');
|
|
Route::post('/admin/attendance/setting', [AttendanceController::class, 'store'])
|
|
->name('admin.attendance.setting.store');
|
|
Route::put('/admin/attendance/{attendance}', [AttendanceController::class, 'updateAttendance'])
|
|
->name('admin.attendance.update');
|
|
|
|
|
|
|
|
// Daftar pengajuan
|
|
Route::get('/admin/pengajuan', [PengajuanController::class, 'showPengajuan'])->name('admin.pengajuan');
|
|
|
|
// Detail pengajuan
|
|
Route::get('/admin/pengajuan/{id}', [PengajuanController::class, 'detailPengajuan'])->name('admin.pengajuan.detail');
|
|
|
|
// Update status pengajuan
|
|
Route::post('/admin/pengajuan/{id}/status', [PengajuanController::class, 'updateStatus'])
|
|
->name('admin.pengajuan.updateStatus');
|
|
|
|
// Daftar perangkat
|
|
Route::get('/admin/perangkat', [PerangkatKontroller::class, 'index'])->name('admin.perangkat');
|
|
Route::post('/admin/perangkat', [PerangkatKontroller::class, 'store'])
|
|
->name('admin.perangkat.store');
|
|
// Tambah perangkat
|
|
Route::get('/admin/perangkat/add', [PerangkatKontroller::class, 'create'])->name('admin.perangkat.add');
|
|
|
|
// Edit perangkat
|
|
Route::get('/admin/perangkat/{id}/edit', [PerangkatKontroller::class, 'edit'])->name('admin.perangkat.edit');
|
|
Route::put('/admin/perangkat/{id}', [PerangkatKontroller::class, 'update'])->name('admin.perangkat.update');
|
|
|
|
// Laporan
|
|
Route::get('/admin/laporan', [LaporanController::class, 'showLaporan'])->name('admin.laporan');
|
|
Route::get('/admin/laporan/export', [LaporanController::class, 'export'])->name('admin.laporan.export');
|
|
// detail per user
|
|
Route::get('/admin/laporan/{user}/detail', [LaporanController::class, 'showDetail'])
|
|
->name('admin.laporan.detail');
|
|
|
|
// (opsional) export detail PDF per user
|
|
Route::get('/admin/laporan/{user}/detail/export', [LaporanController::class, 'exportDetail'])
|
|
->name('admin.laporan.detail.export');
|
|
|
|
|
|
|
|
// Admin News routes
|
|
Route::get('/admin/berita', [NewsAdminController::class, 'index'])->name('admin.berita.index');
|
|
Route::get('/admin/berita/create', [NewsAdminController::class, 'create'])->name('admin.berita.create');
|
|
Route::post('/admin/berita', [NewsAdminController::class, 'store'])->name('admin.berita.store');
|
|
Route::get('/admin/berita/{id}/edit', [NewsAdminController::class, 'edit'])->name('admin.berita.edit');
|
|
Route::put('/admin/berita/{id}', [NewsAdminController::class, 'update'])->name('admin.berita.update');
|
|
Route::delete('/admin/berita/{id}', [NewsAdminController::class, 'destroy'])->name('admin.berita.destroy');
|
|
|
|
Route::get('/logout', [AuthController::class, 'logout'])->name('logout');
|
|
});
|