107 lines
5.8 KiB
PHP
107 lines
5.8 KiB
PHP
<?php
|
|
|
|
use Illuminate\Support\Facades\Route;
|
|
use App\Http\Controllers\AuthController;
|
|
use App\Http\Controllers\DashboardController;
|
|
use App\Http\Controllers\LaporanJalanController;
|
|
use App\Http\Controllers\LaporanBencanaController;
|
|
use App\Http\Controllers\UserController;
|
|
use App\Http\Controllers\AdminController;
|
|
use App\Http\Controllers\VerificationController;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use Illuminate\Notifications\DatabaseNotification;
|
|
use App\Http\Controllers\NotificationController;
|
|
use App\Http\Controllers\ResetPasswordRedirectController;
|
|
use App\Http\Controllers\PrivacyPolicyController;
|
|
use App\Http\Controllers\ExampleController;
|
|
|
|
// Web Routes
|
|
Route::middleware('web')->group(function () {
|
|
// Guest Routes
|
|
Route::middleware('guest')->group(function () {
|
|
Route::get('/', function () {
|
|
return redirect()->route('login');
|
|
});
|
|
Route::get('login', [AuthController::class, 'showLoginForm'])->name('login');
|
|
Route::post('login', [AuthController::class, 'login']);
|
|
Route::get('register', [AuthController::class, 'showRegisterForm'])->name('register');
|
|
Route::post('register', [AuthController::class, 'register']);
|
|
Route::get('privacy-policy', [PrivacyPolicyController::class, 'index'])->name('privacy-policy');
|
|
});
|
|
|
|
// Auth Routes
|
|
Route::middleware('auth')->group(function () {
|
|
Route::post('logout', [AuthController::class, 'logout'])->name('logout');
|
|
Route::get('/dashboard', [DashboardController::class, 'index'])->name('dashboard');
|
|
|
|
// Profile Routes
|
|
Route::get('/profile', [UserController::class, 'profile'])->name('profile');
|
|
Route::put('/profile', [UserController::class, 'updateProfile'])->name('profile.update');
|
|
Route::put('/profile/password', [UserController::class, 'updatePassword'])->name('profile.password');
|
|
|
|
// Laporan Routes
|
|
Route::get('/laporanjalan', [LaporanJalanController::class, 'pemetaan'])->name('laporanjalan');
|
|
Route::get('/laporanbencana', [LaporanBencanaController::class, 'pemetaan'])->name('laporanbencana');
|
|
Route::get('/bencana', [LaporanBencanaController::class, 'index'])->name('bencana.index');
|
|
Route::delete('/bencana/{id}', [LaporanBencanaController::class, 'destroy'])->name('bencana.destroy');
|
|
Route::put('/bencana/{id}/status', [LaporanBencanaController::class, 'updateStatus'])->name('bencana.updateStatus');
|
|
Route::get('/jalan', [LaporanJalanController::class, 'index'])->name('jalan.index');
|
|
Route::delete('/jalan/{id}', [LaporanJalanController::class, 'destroy'])->name('jalan.destroy');
|
|
Route::put('/jalan/{id}/status', [LaporanJalanController::class, 'updateStatus'])->name('jalan.updateStatus');
|
|
|
|
// Route untuk rekap
|
|
Route::get('/bencana/rekap/{format}', [LaporanBencanaController::class, 'rekap'])->name('bencana.rekap');
|
|
Route::get('/jalan/rekap/{format}', [LaporanJalanController::class, 'rekap'])->name('jalan.rekap');
|
|
|
|
// User dan Admin Routes
|
|
Route::get('/users', [UserController::class, 'index'])->name('users.index');
|
|
Route::delete('/users/{id}', [UserController::class, 'destroy'])->name('users.destroy');
|
|
|
|
// Admin Routes
|
|
Route::get('/admins', [AdminController::class, 'index'])->name('admins.index');
|
|
Route::post('/admins', [AdminController::class, 'store'])->name('admins.store');
|
|
Route::delete('/admins/{id}', [AdminController::class, 'destroy'])->name('admins.destroy');
|
|
Route::get('/admins/get-jabatan', [AdminController::class, 'getJabatan'])->name('admins.getJabatan');
|
|
|
|
// Routes untuk dashboard map
|
|
Route::get('/laporan-jalan/data', [DashboardController::class, 'getLaporanJalan'])->name('laporan.jalan.data');
|
|
Route::get('/laporan-bencana/data', [DashboardController::class, 'getLaporanBencana'])->name('laporan.bencana.data');
|
|
|
|
// Tambahkan route ini
|
|
Route::post('/bencana', [LaporanBencanaController::class, 'store'])->name('bencana.store');
|
|
|
|
// Rute untuk laporan jalan
|
|
Route::get('/laporan-jalan', [LaporanJalanController::class, 'index'])->name('jalan.index');
|
|
Route::post('/laporan-jalan', [LaporanJalanController::class, 'store'])->name('jalan.store');
|
|
Route::delete('/laporan-jalan/{id}', [LaporanJalanController::class, 'destroy'])->name('jalan.destroy');
|
|
Route::put('/laporan-jalan/{id}/status', [LaporanJalanController::class, 'updateStatus'])->name('jalan.updateStatus');
|
|
});
|
|
|
|
// Tambahkan route ini
|
|
Route::get('email/verify/{token}', [VerificationController::class, 'verifyEmail'])
|
|
->name('email.verify');
|
|
|
|
// Notification routes
|
|
Route::middleware(['auth'])->group(function () {
|
|
// Route untuk notifikasi
|
|
Route::post('/notifications/{id}/mark-as-read', [NotificationController::class, 'markAsRead'])->name('notifications.mark-as-read');
|
|
Route::post('/notifications/mark-all-read', [NotificationController::class, 'markAllRead'])->name('notifications.mark-all-read');
|
|
Route::post('/notifications/delete-read', [NotificationController::class, 'deleteRead'])->name('notifications.delete-read');
|
|
|
|
// Route untuk mendapatkan jumlah notifikasi
|
|
Route::get('/get-notifications-count', [NotificationController::class, 'getNotificationsCount'])->name('notifications.count');
|
|
});
|
|
|
|
// Tambahkan route ini
|
|
Route::get('/reset-password-redirect/{token}/{email}', [ResetPasswordRedirectController::class, 'redirect'])
|
|
->name('password.reset.redirect');
|
|
|
|
// Route untuk contoh notifikasi real-time
|
|
Route::get('/create-sample-notification', [ExampleController::class, 'createSampleNotification']);
|
|
|
|
// Route untuk autentikasi Pusher channel
|
|
Route::post('broadcasting/auth', function() {
|
|
return Auth::user();
|
|
});
|
|
});
|