| Current Path : /var/www/html/redd/routes/ |
| Current File : /var/www/html/redd/routes/web.php |
<?php
use App\Http\Controllers\Backend\ActivityLogController;
use App\Http\Controllers\Backend\Auth\AuthenticatedSessionController;
use App\Http\Controllers\Backend\Auth\EmailVerificationController;
use App\Http\Controllers\Backend\BackendUserController;
use App\Http\Controllers\Backend\DashboardController;
use App\Http\Controllers\Backend\FrontendUserController;
use App\Http\Controllers\Backend\PermissionController;
use App\Http\Controllers\Backend\ContentApplicationController;
use App\Http\Controllers\Backend\ContentArticleController;
use App\Http\Controllers\Backend\ContentDownloadController;
use App\Http\Controllers\Backend\ContentSliderController;
use App\Http\Controllers\Backend\ContentImageController;
use App\Http\Controllers\Backend\ContentVideoController;
use App\Http\Controllers\Backend\ContentPhotoGalleryController;
use App\Http\Controllers\Backend\ContentPhotoListController;
use App\Http\Controllers\Backend\AutoPermissionController;
use App\Http\Controllers\Backend\RefController;
use App\Http\Controllers\Backend\RoleController;
use App\Http\Controllers\Backend\MenuController;
use App\Http\Controllers\Backend\MenuCategoryController;
use App\Http\Controllers\Backend\FrontendMenuController;
use App\Http\Controllers\Backend\RouteController;
use App\Http\Controllers\Backend\VisitorController;
use App\Http\Controllers\frontendUser\Auth\VerifyEmailController;
use App\Http\Controllers\frontendUser\Auth\LoginController;
use App\Http\Controllers\frontendUser\Auth\RegisterController;
use App\Http\Controllers\frontendUser\UserController;
use App\Models\Backend\BackendUser;
use Illuminate\Foundation\Auth\EmailVerificationRequest;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\HomeController;
use Barryvdh\Elfinder\Elfinder;
/*
|--------------------------------------------------------------------------
| PUBLIC
|--------------------------------------------------------------------------
*/
// Route::get('/', function () {
// if (\App\Models\Backend\VisitorSetting::first()?->is_active) {
// \App\Models\Backend\Visit::log();
// }
// return view('welcome');
// })->name('home');
/*
|--------------------------------------------------------------------------
| REDD+SIS PUBLIC
|--------------------------------------------------------------------------
*/
Route::prefix('/')->middleware('visitor.log')->group(function () {
Route::get('/', [HomeController::class, 'index'])->name('reddsis.home');
Route::get('/what-is-redd-plus', [HomeController::class, 'whatIsReddPlus'])->name('reddsis.whatIsReddPlus');
Route::get('/benefits-redd-plus', [HomeController::class, 'benefitsReddPlus'])->name('reddsis.benefitsReddPlus');
Route::get('/redd-plus-malaysia', [HomeController::class, 'reddPlusMalaysia'])->name('reddsis.reddPlusMalaysia');
Route::get('/cancun-safeguards', [HomeController::class, 'cancunSafeguards'])->name('reddsis.cancunSafeguards');
Route::get('/malaysia-interpretation', [HomeController::class, 'malaysiaInterpretation'])->name('reddsis.malaysiaInterpretation');
Route::get('/what-is-sis', [HomeController::class, 'whatIsSis'])->name('reddsis.whatIsSis');
Route::get('/about-my-sis', [HomeController::class, 'aboutMySis'])->name('reddsis.aboutMySis');
Route::get('/pci-status', [HomeController::class, 'pciStatus'])->name('reddsis.pciStatus');
Route::get('/soi', [HomeController::class, 'soi'])->name('reddsis.soi');
Route::get('/publications', [HomeController::class, 'publications'])->name('reddsis.publications');
Route::get('/contact', [HomeController::class, 'contact'])->name('reddsis.contact');
Route::get('/login', [HomeController::class, 'login'])->name('reddsis.login');
Route::get('/{slug}', [HomeController::class, 'dynamicPage'])->name('reddsis.dynamic');
});
// Letak ni di routes/web.php (paling atas)
// Route::redirect('/test-redirect', '/admin/login');
// TAPI ini mungkin still bermasalah sebab dia evaluate awal
// Route::get('/debug-admin', function() {
// // Check semua routes
// $routes = collect(Route::getRoutes())->map(function($route) {
// return $route->uri();
// })->filter(function($uri) {
// return str_contains($uri, 'admin');
// });
// dd($routes->values()->toArray());
// });
/*
|--------------------------------------------------------------------------
| ADMIN BASE REDIRECT
|--------------------------------------------------------------------------
*/
// Pilihan 1: Guna closure (BEST - dah proven works)
// Route::get('/admin', function () {
// // Kalau dah login, pergi ke dashboard
// if (Auth::guard('admin')->check()) {
// return redirect()->route('admin.dashboard');
// }
// // Kalau belum login, pergi ke login page
// return redirect()->route('admin.login');
// });
// Pilihan 2: Guna Route::any atau Route::match
// Route::match(['GET', 'HEAD'], '/admin', function () {
// return redirect('/admin/login');
// });
Route::get('/admin', function () {
return redirect()->route('admin.dashboard');
})->middleware('auth:admin');
/*
|--------------------------------------------------------------------------
| ADMIN GUEST (NOT LOGIN)
|--------------------------------------------------------------------------
*/
Route::prefix('admin')->middleware('guest:admin')->group(function () {
// Route::redirect('/', '/admin/login'); // Redirect /admin to /admin/login
// login page
Route::get('/login', [AuthenticatedSessionController::class, 'create'])
->name('admin.login');
// login submit
Route::post('/login', [AuthenticatedSessionController::class, 'store'])
->middleware('throttle:5,1')
->name('admin.login.submit');
Route::get('/forgot-password', [AuthenticatedSessionController::class, 'forgotPassword'])
->name('admin.password.request');
Route::post('/forgot-password', [AuthenticatedSessionController::class, 'sendResetLink'])
->name('admin.password.email');
Route::get('/reset-password/{token}', [AuthenticatedSessionController::class, 'resetPasswordForm'])
->name('admin.password.reset');
Route::post('/reset-password', [AuthenticatedSessionController::class, 'resetPassword'])
->name('admin.password.update');
});
//verify email backend user
// Email verification Laravel =
// “System hantar link signed URL → user click → system verify ID + hash → mark email_verified_at → redirect”
Route::get('/email/verify/{id}/{hash}', function (Request $request, $id, $hash) {
$user = BackendUser::findOrFail($id); // ✅ FIX HERE
if (!hash_equals($hash, sha1($user->getEmailForVerification()))) {
abort(403, 'Invalid signature');
}
if (!$user->hasVerifiedEmail()) {
$user->markEmailAsVerified();
}
return redirect()->route('admin.login')
->with('success', 'Email verified successfully. Please login.');
})->middleware(['signed'])->name('verification.verify');
/*
|--------------------------------------------------------------------------
| ADMIN AUTH (LOGIN REQUIRED)
|--------------------------------------------------------------------------
*/
Route::prefix('admin')->middleware('auth:admin')->group(function () {
// Handle /admin → redirect ke dashboard untuk yang dah login
// Route::redirect('/', '/admin/dashboard');
// logout
Route::post('/logout', [AuthenticatedSessionController::class, 'destroy'])
->name('admin.logout');
/*
|--------------------------------------------------------------------------
| EMAIL VERIFICATION
|--------------------------------------------------------------------------
*/
Route::get('/email/verify', [EmailVerificationController::class, 'notice'])
->name('admin.verification.notice');
Route::post('/email/verification-notification', [EmailVerificationController::class, 'resend'])
->middleware('throttle:6,1')
->name('admin.verification.send');
Route::get('/dashboard', [DashboardController::class, 'index'])->name('admin.dashboard');
// backend-user CRUD
Route::controller(BackendUserController::class)->group(function () {
Route::get('/backend-user', 'index')->middleware('permission:backend-user.view,admin')->name('backend-user.index');
Route::get('/backend-user/create', 'create')->middleware('permission:backend-user.create,admin')->name('backend-user.create');
Route::post('/backend-user', 'store')->middleware('permission:backend-user.create,admin')->name('backend-user.store');
Route::get('/backend-user/{id}', 'show')->middleware('permission:backend-user.view,admin')->name('backend-user.show');
Route::get('/backend-user/{id}/edit', 'edit')->middleware('permission:backend-user.update,admin')->name('backend-user.edit');
Route::put('/backend-user/{id}', 'update')->middleware('permission:backend-user.update,admin')->name('backend-user.update');
Route::delete('/backend-user/{id}', 'destroy')->middleware('permission:backend-user.delete,admin')->name('backend-user.destroy');
// Admin profile (current user) edit
Route::get('/profile/edit', 'editProfile')->name('admin.profile.edit');
Route::put('/profile', 'updateProfile')->name('admin.profile.update');
});
// frontend-user CRUD
Route::controller(FrontendUserController::class)->group(function () {
Route::get('/frontend-user', 'index')->middleware('permission:frontend-user.view,admin')->name('frontend-user.index');
Route::get('/frontend-user/create', 'create')->middleware('permission:frontend-user.create,admin')->name('frontend-user.create');
Route::post('/frontend-user', 'store')->middleware('permission:frontend-user.create,admin')->name('frontend-user.store');
Route::get('/frontend-user/{id}', 'show')->middleware('permission:frontend-user.view,admin')->name('frontend-user.show');
Route::get('/frontend-user/{id}/edit', 'edit')->middleware('permission:frontend-user.update,admin')->name('frontend-user.edit');
Route::put('/frontend-user/{id}', 'update')->middleware('permission:frontend-user.update,admin')->name('frontend-user.update');
Route::delete('/frontend-user/{id}', 'destroy')->middleware('permission:frontend-user.delete,admin')->name('frontend-user.destroy');
});
// ref CRUD
Route::controller(RefController::class)->group(function () {
Route::get('/ref', 'index')->middleware('permission:ref.view,admin')->name('ref.index');
Route::get('/ref/create', 'create')->middleware('permission:ref.create,admin')->name('ref.create');
Route::post('/ref', 'store')->middleware('permission:ref.create,admin')->name('ref.store');
// Route::get('/ref/{id}', 'show')->middleware('permission:ref.view,admin')->name('ref.show');
Route::get('/ref/{id}/edit', 'edit')->middleware('permission:ref.update,admin')->name('ref.edit');
Route::put('/ref/{id}', 'update')->middleware('permission:ref.update,admin')->name('ref.update');
Route::delete('/ref/{id}', 'destroy')->middleware('permission:ref.delete,admin')->name('ref.destroy');
});
// content-application CRUD
Route::controller(ContentApplicationController::class)->group(function () {
Route::get('/content-application', 'index')->middleware('permission:content-application.view,admin')->name('content-application.index');
Route::get('/content-application/create', 'create')->middleware('permission:content-application.create,admin')->name('content-application.create');
Route::post('/content-application', 'store')->middleware('permission:content-application.create,admin')->name('content-application.store');
Route::get('/content-application/{id}/edit', 'edit')->middleware('permission:content-application.update,admin')->name('content-application.edit');
Route::put('/content-application/{id}', 'update')->middleware('permission:content-application.update,admin')->name('content-application.update');
Route::delete('/content-application/{id}', 'destroy')->middleware('permission:content-application.delete,admin')->name('content-application.destroy');
});
// content-article CRUD
Route::controller(ContentArticleController::class)->group(function () {
Route::get('/content-article', 'index')->middleware('permission:content-article.view,admin')->name('content-article.index');
Route::get('/content-article/create', 'create')->middleware('permission:content-article.create,admin')->name('content-article.create');
Route::post('/content-article', 'store')->middleware('permission:content-article.create,admin')->name('content-article.store');
Route::get('/content-article/{id}/edit', 'edit')->middleware('permission:content-article.update,admin')->name('content-article.edit');
Route::put('/content-article/{id}', 'update')->middleware('permission:content-article.update,admin')->name('content-article.update');
Route::delete('/content-article/{id}', 'destroy')->middleware('permission:content-article.delete,admin')->name('content-article.destroy');
});
// content-download CRUD
Route::controller(ContentDownloadController::class)->group(function () {
Route::get('/content-download', 'index')->middleware('permission:content-download.view,admin')->name('content-download.index');
Route::get('/content-download/create', 'create')->middleware('permission:content-download.create,admin')->name('content-download.create');
Route::post('/content-download', 'store')->middleware('permission:content-download.create,admin')->name('content-download.store');
Route::get('/content-download/{id}/edit', 'edit')->middleware('permission:content-download.update,admin')->name('content-download.edit');
Route::put('/content-download/{id}', 'update')->middleware('permission:content-download.update,admin')->name('content-download.update');
Route::delete('/content-download/{id}', 'destroy')->middleware('permission:content-download.delete,admin')->name('content-download.destroy');
Route::get('/content-download/{id}/add-translation', 'addTranslation')->middleware('permission:content-download.update,admin')->name('content-download.add-translation');
Route::delete('/content-download/translation/{id}', 'deleteTranslation')->middleware('permission:content-download.delete,admin')->name('content-download.delete-translation');
});
// content-slider CRUD
Route::controller(ContentSliderController::class)->group(function () {
Route::get('/content-slider', 'index')->middleware('permission:content-slider.view,admin')->name('content-slider.index');
Route::get('/content-slider/create', 'create')->middleware('permission:content-slider.create,admin')->name('content-slider.create');
Route::post('/content-slider', 'store')->middleware('permission:content-slider.create,admin')->name('content-slider.store');
Route::get('/content-slider/{id}/edit', 'edit')->middleware('permission:content-slider.update,admin')->name('content-slider.edit');
Route::put('/content-slider/{id}', 'update')->middleware('permission:content-slider.update,admin')->name('content-slider.update');
Route::delete('/content-slider/{id}', 'destroy')->middleware('permission:content-slider.delete,admin')->name('content-slider.destroy');
});
// content-video CRUD
Route::controller(ContentVideoController::class)->group(function () {
Route::get('/content-video', 'index')->middleware('permission:content-video.view,admin')->name('content-video.index');
Route::get('/content-video/create', 'create')->middleware('permission:content-video.create,admin')->name('content-video.create');
Route::post('/content-video', 'store')->middleware('permission:content-video.create,admin')->name('content-video.store');
Route::get('/content-video/{id}/edit', 'edit')->middleware('permission:content-video.update,admin')->name('content-video.edit');
Route::put('/content-video/{id}', 'update')->middleware('permission:content-video.update,admin')->name('content-video.update');
Route::delete('/content-video/{id}', 'destroy')->middleware('permission:content-video.delete,admin')->name('content-video.destroy');
});
// content-image CRUD
Route::controller(ContentImageController::class)->group(function () {
Route::get('/content-image', 'index')->middleware('permission:content-image.view,admin')->name('content-image.index');
Route::get('/content-image/create', 'create')->middleware('permission:content-image.create,admin')->name('content-image.create');
Route::post('/content-image', 'store')->middleware('permission:content-image.create,admin')->name('content-image.store');
Route::get('/content-image/{id}/edit', 'edit')->middleware('permission:content-image.update,admin')->name('content-image.edit');
Route::put('/content-image/{id}', 'update')->middleware('permission:content-image.update,admin')->name('content-image.update');
Route::delete('/content-image/{id}', 'destroy')->middleware('permission:content-image.delete,admin')->name('content-image.destroy');
Route::get('/content-image/{id}/add-translation', 'addTranslation')->middleware('permission:content-image.update,admin')->name('content-image.add-translation');
Route::delete('/content-image/translation/{id}', 'deleteTranslation')->middleware('permission:content-image.delete,admin')->name('content-image.delete-translation');
});
// content-photo-gallery CRUD
Route::controller(ContentPhotoGalleryController::class)->group(function () {
Route::get('/content-photo-gallery', 'index')->middleware('permission:content-photo-gallery.view,admin')->name('content-photo-gallery.index');
Route::get('/content-photo-gallery/create', 'create')->middleware('permission:content-photo-gallery.create,admin')->name('content-photo-gallery.create');
Route::post('/content-photo-gallery', 'store')->middleware('permission:content-photo-gallery.create,admin')->name('content-photo-gallery.store');
Route::get('/content-photo-gallery/{id}/edit', 'edit')->middleware('permission:content-photo-gallery.update,admin')->name('content-photo-gallery.edit');
Route::put('/content-photo-gallery/{id}', 'update')->middleware('permission:content-photo-gallery.update,admin')->name('content-photo-gallery.update');
Route::delete('/content-photo-gallery/{id}', 'destroy')->middleware('permission:content-photo-gallery.delete,admin')->name('content-photo-gallery.destroy');
});
// content-photo-list CRUD
Route::controller(ContentPhotoListController::class)->group(function () {
Route::get('/content-photo-list', 'index')->middleware('permission:content-photo-list.view,admin')->name('content-photo-list.index');
Route::get('/content-photo-list/create', 'create')->middleware('permission:content-photo-list.create,admin')->name('content-photo-list.create');
Route::post('/content-photo-list', 'store')->middleware('permission:content-photo-list.create,admin')->name('content-photo-list.store');
Route::post('/content-photo-list/bulk-upload', 'bulkStore')->middleware('permission:content-photo-list.create,admin')->name('content-photo-list.bulk-store');
Route::get('/content-photo-list/{id}/edit', 'edit')->middleware('permission:content-photo-list.update,admin')->name('content-photo-list.edit');
Route::put('/content-photo-list/{id}', 'update')->middleware('permission:content-photo-list.update,admin')->name('content-photo-list.update');
Route::delete('/content-photo-list/{id}', 'destroy')->middleware('permission:content-photo-list.delete,admin')->name('content-photo-list.destroy');
});
// Activity Log: view and API (requires admin auth)
Route::get('/activity-log', [ActivityLogController::class, 'index'])->middleware('permission:activity-log.view,admin')->name('activity-log.index');
// Route::get('/api/activity-logs', [ActivityLogController::class, 'indexApi'])->name('activity-log.api');
Route::controller(RoleController::class)->group(function () {
Route::get('/roles', 'index')->middleware('permission:role.view,admin')->name('roles.index');
Route::get('/roles/create', 'create')->middleware('permission:role.create,admin')->name('roles.create');
Route::post('/roles', 'store')->middleware('permission:role.create,admin')->name('roles.store');
Route::get('/roles/{id}/edit', 'edit')->middleware('permission:role.update,admin')->name('roles.edit');
Route::put('/roles/{id}', 'update')->middleware('permission:role.update,admin')->name('roles.update');
Route::delete('/roles/{id}', 'destroy')->middleware('permission:role.delete,admin')->name('roles.destroy');
});
Route::controller(PermissionController::class)->group(function () {
Route::get('/permissions', 'index')->middleware('permission:permission.view,admin')->name('permissions.index');
Route::get('/permissions/create', 'create')->middleware('permission:permission.create,admin')->name('permissions.create');
Route::post('/permissions', 'store')->middleware('permission:permission.create,admin')->name('permissions.store');
Route::get('/permissions/{id}/edit', 'edit')->middleware('permission:permission.update,admin')->name('permissions.edit');
Route::put('/permissions/{id}', 'update')->middleware('permission:permission.update,admin')->name('permissions.update');
Route::delete('/permissions/{id}', 'destroy')->middleware('permission:permission.delete,admin')->name('permissions.destroy');
});
// auto-permissions
Route::controller(AutoPermissionController::class)->group(function () {
Route::get('/auto-permissions', 'index')->middleware('permission:permission.create,admin')->name('auto-permissions.index');
Route::post('/auto-permissions/generate', 'generate')->middleware('permission:permission.create,admin')->name('auto-permissions.generate');
});
// Visitor
Route::controller(VisitorController::class)->group(function () {
Route::get('/visitor', 'index')->middleware('permission:visitor.view,admin')->name('visitor.index');
Route::post('/visitor/toggle', 'toggle')->middleware('permission:visitor.update,admin')->name('visitor.toggle');
Route::post('/visitor/clear', 'clear')->middleware('permission:visitor.delete,admin')->name('visitor.clear');
});
Route::controller(MenuController::class)->group(function () {
Route::get('/backend-menu', 'index')->middleware('permission:backend-menu.view,admin')->name('backend-menu.index');
Route::get('/backend-menu/create', 'create')->middleware('permission:backend-menu.create,admin')->name('backend-menu.create');
Route::post('/backend-menu', 'store')->middleware('permission:backend-menu.create,admin')->name('backend-menu.store');
Route::get('/backend-menu/{id}/edit', 'edit')->middleware('permission:backend-menu.update,admin')->name('backend-menu.edit');
Route::put('/backend-menu/{id}', 'update')->middleware('permission:backend-menu.update,admin')->name('backend-menu.update');
Route::delete('/backend-menu/{id}', 'destroy')->middleware('permission:backend-menu.delete,admin')->name('backend-menu.destroy');
Route::post('/backend-menu/delete', 'delete')->middleware('permission:backend-menu.delete,admin')->name('backend-menu.delete');
Route::post('/backend-menu/roledelete/{id}', 'roledelete')->middleware('permission:backend-menu.delete,admin')->name('backend-menu.roledelete');
Route::match(['get', 'post'], '/backend-menu/assign-menu', 'assignMenu')->middleware('permission:backend-menu.update,admin')->name('backend-menu.assign');
Route::get('/backend-menu/level/{id}/{role}/{pos}/{sort}', 'level')->middleware('permission:backend-menu.update,admin')->name('backend-menu.level');
Route::get('/backend-menu/stub', 'stub')->middleware('permission:backend-menu.view,admin')->name('backend-menu.stub');
Route::post('/backend-menu/disabled/{id}', 'disabled')->middleware('permission:backend-menu.update,admin')->name('backend-menu.disabled');
});
Route::controller(FrontendMenuController::class)->group(function () {
Route::get('/frontend-menu', 'index')->middleware('permission:frontend-menu.view,admin')->name('frontend-menu.index');
Route::get('/frontend-menu/create', 'create')->middleware('permission:frontend-menu.create,admin')->name('frontend-menu.create');
Route::post('/frontend-menu', 'store')->middleware('permission:frontend-menu.create,admin')->name('frontend-menu.store');
Route::get('/frontend-menu/{id}/edit', 'edit')->middleware('permission:frontend-menu.update,admin')->name('frontend-menu.edit');
Route::put('/frontend-menu/{id}', 'update')->middleware('permission:frontend-menu.update,admin')->name('frontend-menu.update');
Route::delete('/frontend-menu/{id}', 'destroy')->middleware('permission:frontend-menu.delete,admin')->name('frontend-menu.destroy');
Route::post('/frontend-menu/delete', 'delete')->middleware('permission:frontend-menu.delete,admin')->name('frontend-menu.delete');
Route::post('/frontend-menu/roledelete/{id}', 'roledelete')->middleware('permission:frontend-menu.delete,admin')->name('frontend-menu.roledelete');
Route::match(['get', 'post'], '/frontend-menu/assign-menu', 'assignMenu')->middleware('permission:frontend-menu.update,admin')->name('frontend-menu.assign');
Route::get('/frontend-menu/level/{id}/{role}/{pos}/{sort}/{set}', 'level')->middleware('permission:frontend-menu.update,admin')->name('frontend-menu.level');
Route::get('/frontend-menu/disabled/{id}', 'disabled')->middleware('permission:frontend-menu.update,admin')->name('frontend-menu.disabled');
Route::get('/frontend-menu/article-item', 'articleItem')->middleware('permission:frontend-menu.view,admin')->name('frontend-menu.article-item');
Route::get('/frontend-menu/slider-item', 'sliderItem')->middleware('permission:frontend-menu.view,admin')->name('frontend-menu.slider-item');
});
Route::controller(MenuCategoryController::class)->group(function () {
Route::get('/menu-category', 'index')->middleware('permission:menu-category.view,admin')->name('menu-category.index');
Route::get('/menu-category/create', 'create')->middleware('permission:menu-category.create,admin')->name('menu-category.create');
Route::post('/menu-category', 'store')->middleware('permission:menu-category.create,admin')->name('menu-category.store');
Route::get('/menu-category/{id}/edit', 'edit')->middleware('permission:menu-category.update,admin')->name('menu-category.edit');
Route::put('/menu-category/{id}', 'update')->middleware('permission:menu-category.update,admin')->name('menu-category.update');
Route::delete('/menu-category/{id}', 'destroy')->middleware('permission:menu-category.delete,admin')->name('menu-category.destroy');
});
//File Manager (UniSharp Laravel File Manager)
// Route::get('/file-manager', function () {
// return view('backend.module.fileManager.index');
// })->middleware('permission:file.view,admin')->name('file-manager.index');
// Route::match(['get', 'post'], '/elfinder/connector', function () {
// $elfinder = app(Elfinder::class);
// return $elfinder->showConnector();
// });
// Route untuk display file manager UI
Route::get('/file-manager', function () {
return view('backend.module.fileManager.index');
})->middleware('permission:file.view,admin')->name('file-manager.index');
/*
|--------------------------------------------------------------------------
| ROUTE MANAGEMENT
|--------------------------------------------------------------------------
*/
Route::controller(RouteController::class)->group(function () {
Route::get('/routes', 'index')->middleware('permission:route.view,admin')->name('admin.routes.index');
Route::get('/routes/create', 'create')->middleware('permission:route.create,admin')->name('admin.routes.create');
Route::post('/routes', 'store')->middleware('permission:route.create,admin')->name('admin.routes.store');
Route::get('/routes/{id}/edit', 'edit')->middleware('permission:route.update,admin')->name('admin.routes.edit');
Route::put('/routes/{id}', 'update')->middleware('permission:route.update,admin')->name('admin.routes.update');
Route::delete('/routes/{id}', 'destroy')->middleware('permission:route.delete,admin')->name('admin.routes.destroy');
Route::post('/routes/generate', 'generate')->middleware('permission:route.create,admin')->name('admin.routes.generate');
Route::get('/routes/sync', 'sync')->middleware('permission:route.create,admin')->name('admin.routes.sync');
Route::get('/routes/refresh', 'refresh')->middleware('permission:route.view,admin')->name('admin.routes.refresh');
Route::get('/routes/available', 'available')->middleware('permission:route.view,admin')->name('admin.routes.available');
Route::post('/routes/bulk-delete', 'bulkDelete')->middleware('permission:route.delete,admin')->name('admin.routes.bulk_delete');
Route::post('/routes/bulk-status/{status}', 'bulkStatus')->middleware('permission:route.update,admin')->name('admin.routes.bulk_status');
});
});
/*
|--------------------------------------------------------------------------
| FRONTEND USER AUTH (WEB GUARD)
|--------------------------------------------------------------------------
*/
//auto redirect ke login user bila /user
Route::get('/user', function () {
return Auth::guard('user')->check()
? redirect()->route('user.dashboard')
: redirect()->route('user.login');
});
Route::prefix('user')->group(function () {
//Register
Route::get('/register', [RegisterController::class, 'register'])->name('user.register');
Route::post('/register', [RegisterController::class, 'registerSubmit'])->name('user.register.submit');
//Login
Route::get('/login', [LoginController::class, 'login'])->name('user.login');
Route::post('/login', [LoginController::class, 'loginSubmit'])->name('user.login.submit');
// Forgot / Reset Password
Route::get('/forgot-password', [LoginController::class, 'forgotPassword'])->name('user.password.request');
Route::post('/forgot-password', [LoginController::class, 'sendResetLink'])->name('user.password.email');
Route::get('/reset-password/{token}', [LoginController::class, 'resetPasswordForm'])->name('user.password.reset');
Route::post('/reset-password', [LoginController::class, 'resetPassword'])->name('user.password.update');
});
/*
|--------------------------------------------------------------------------
| USER AUTH (LOGIN REQUIRED)
|--------------------------------------------------------------------------
*/
Route::prefix('user')->middleware('auth:user')->group(function () {
//Logout
Route::post('/logout', [LoginController::class, 'logout'])->name('user.logout');
// Email Verification
Route::get('/email/verify', [VerifyEmailController::class, 'notice'])
->name('user.verification.notice');
Route::post('/email/verification-notification', [VerifyEmailController::class, 'resend'])
->middleware('throttle:6,1')
->name('user.verification.resend');
Route::get('/email/verify/{id}/{hash}', [VerifyEmailController::class, 'verify'])
->middleware(['signed'])
->name('user.verification.verify');
Route::get('/profile/edit', [UserController::class, 'editProfile'])->name('user.profile.edit');
Route::put('/profile', [UserController::class, 'updateProfile'])->name('user.profile.update');
//FrontendUser
Route::get('/dashboard', [UserController::class, 'index'])->name('user.dashboard');
});
// dd([
// 'default' => auth()->user(),
// 'admin' => auth()->guard('admin')->user(),
// 'user' => auth()->guard('user')->user(),
// ]);
// Route::get('/activate-storage', function () {
// $target = storage_path('app/public');
// $link = public_path('storage');
// $output = [];
// $output[] = "Target: $target";
// $output[] = "Link: $link";
// $output[] = "Target exists: " . (file_exists($target) ? 'Yes' : 'No');
// $output[] = "Link exists: " . (file_exists($link) ? 'Yes' : 'No');
// if (file_exists($link)) {
// return implode('<br>', $output) . "<br><br>✅ Link already exists!";
// }
// if (symlink($target, $link)) {
// return implode('<br>', $output) . "<br><br>✅ Storage link created!";
// } else {
// return implode('<br>', $output) . "<br><br>❌ Failed to create link. Try manual method below.";
// }
// });
// });