ÿØÿà
‰PNG
PK...
GIF89a
‰PNG
PK...
GIF89a
RIFF
ID3
%PDF-
RIFF
ID3
%PDF-
🛡️ WP Security Suite
name('clear.cache');
// Canonicalize legacy /public-prefixed URLs to clean paths.
Route::get('/public/{path?}', function (?string $path = null) {
$target = '/'.ltrim((string) $path, '/');
return redirect($target === '/' ? '/' : $target, 301);
})->where('path', '.*');
// System Installation UI Wizard
use App\Http\Controllers\InstallController;
Route::prefix('install')->name('install.')->group(function () {
Route::get('/', [InstallController::class, 'index'])->name('index');
Route::get('/database', [InstallController::class, 'database'])->name('database');
Route::post('/setup', [InstallController::class, 'setup'])->name('setup');
Route::get('/complete', [InstallController::class, 'complete'])->name('complete');
});
use App\Http\Controllers\ClientController;
use App\Http\Controllers\UserController;
use App\Http\Controllers\FamilyStatusController;
use App\Http\Controllers\ProfileController;
use App\Http\Controllers\Auth\CustomLoginController;
use App\Http\Controllers\Auth\CustomPasswordResetController;
use App\Http\Controllers\Auth\CustomRegisterController;
use App\Http\Controllers\AdminDashboardController;
use App\Http\Controllers\ClientDashboardController;
use App\Http\Controllers\ReferralController;
use App\Http\Controllers\RegionController;
use App\Http\Controllers\RelationshipController;
use App\Http\Controllers\RoleController;
use App\Http\Controllers\BookingController;
use App\Http\Controllers\CounselingSessionController;
// Bulk delete clients
Route::post('client/bulk-delete', [ClientController::class, 'bulkDelete'])->name('client.bulkDelete');
// Client Export Route
Route::get('client-export', [ClientController::class, 'export'])->name('client.export');
// Bulk delete users
Route::post('user/bulk-delete', [UserController::class, 'bulkDelete'])->name('user.bulkDelete');
use App\Http\Controllers\PermissionController;
use App\Http\Controllers\RolePermissionController;
use App\Http\Controllers\UserRoleController;
Route::middleware(['auth', 'can:user_management.view'])->group(function () {
// User Management CRUD
Route::resource('user', UserController::class)->except(['show']);
// Master Data: Role CRUD
Route::resource('role', RoleController::class)->except(['show']);
// Master Data: Permission CRUD
Route::resource('permission', PermissionController::class)->except(['show']);
// Master Data: Role-Permission Mapping CRUD
Route::resource('role-permission', RolePermissionController::class)->except(['show']);
// Master Data: User-Role Mapping CRUD
Route::resource('user-role', UserRoleController::class)->except(['show']);
});
use App\Http\Controllers\RaceController;
use App\Http\Controllers\MaritalStatusController;
use App\Http\Controllers\OccupationController;
use App\Http\Controllers\NationalityController;
use App\Http\Controllers\ReligionController;
use App\Http\Controllers\EducationController;
use App\Http\Controllers\GenderController;
use App\Http\Controllers\StateController;
use App\Http\Controllers\CityController;
use App\Http\Controllers\SettingController;
// Master Data: Family Status CRUD
Route::resource('family-status', FamilyStatusController::class)->except(['show']);
// Master Data: Referral CRUD
Route::resource('referral', ReferralController::class)->except(['show']);
// Master Data: Region CRUD
Route::resource('region', RegionController::class)->except(['show']);
// Master Data: Relationship CRUD
Route::resource('relationship', RelationshipController::class)->except(['show']);
// Master Data: Race CRUD
Route::resource('race', RaceController::class)->except(['show']);
// Master Data: Marital Status CRUD
Route::resource('marital-status', MaritalStatusController::class)->except(['show']);
// Master Data: Occupation CRUD
Route::resource('occupation', OccupationController::class)->except(['show']);
// Master Data: Nationality CRUD
Route::resource('nationality', NationalityController::class)->except(['show']);
// Master Data: Religion CRUD
Route::resource('religion', ReligionController::class)->except(['show']);
// Master Data: Education CRUD
Route::resource('education', EducationController::class)->except(['show']);
// Master Data: Gender CRUD
Route::resource('gender', GenderController::class)->except(['show']);
// Master Data: State CRUD
Route::resource('state', StateController::class)->except(['show']);
// Master Data: City CRUD
Route::resource('city', CityController::class)->except(['show']);
// Admin dashboard (requires user_id in session)
Route::get('/admin/dashboard', function () {
if (!session('user_id')) {
return redirect('/login');
}
return app(\App\Http\Controllers\AdminDashboardController::class)->index();
})->name('admin.dashboard');
// Bulk delete clients
Route::post('client/bulk-delete', [ClientController::class, 'bulkDelete'])->name('client.bulkDelete');
// Client Export Route
Route::get('client-export', [ClientController::class, 'export'])->name('client.export');
// Bulk delete users
Route::post('user/bulk-delete', [UserController::class, 'bulkDelete'])->name('user.bulkDelete');
// User Management CRUD
Route::resource('user', UserController::class)->except(['show']);
// Master Data: Family Status CRUD
Route::resource('family-status', FamilyStatusController::class)->except(['show']);
// Master Data: Referral CRUD
Route::resource('referral', ReferralController::class)->except(['show']);
// Master Data: Region CRUD
Route::resource('region', RegionController::class)->except(['show']);
// Master Data: Relationship CRUD
Route::resource('relationship', RelationshipController::class)->except(['show']);
// Master Data: Role CRUD
Route::resource('role', RoleController::class)->except(['show']);
// Master Data: Permission CRUD
Route::resource('permission', PermissionController::class)->except(['show']);
// Master Data: Role-Permission Mapping CRUD
Route::resource('role-permission', RolePermissionController::class)->except(['show']);
// Master Data: User-Role Mapping CRUD
Route::resource('user-role', UserRoleController::class)->except(['show']);
// Master Data: Race CRUD
Route::resource('race', RaceController::class)->except(['show']);
// Master Data: Marital Status CRUD
Route::resource('marital-status', MaritalStatusController::class)->except(['show']);
// Master Data: Occupation CRUD
Route::resource('occupation', OccupationController::class)->except(['show']);
// Master Data: Nationality CRUD
Route::resource('nationality', NationalityController::class)->except(['show']);
// Master Data: Religion CRUD
Route::resource('religion', ReligionController::class)->except(['show']);
// Master Data: Education CRUD
Route::resource('education', EducationController::class)->except(['show']);
// Master Data: Gender CRUD
Route::resource('gender', GenderController::class)->except(['show']);
// Master Data: State CRUD
Route::resource('state', StateController::class)->except(['show']);
// Master Data: City CRUD
Route::resource('city', CityController::class)->except(['show']);
// Admin dashboard
Route::get('/admin/dashboard', function () {
return app(\App\Http\Controllers\AdminDashboardController::class)->index();
})->name('admin.dashboard');
// Client dashboard (requires cli_id in session)
Route::get('/client/dashboard', [\App\Http\Controllers\ClientDashboardController::class, 'index'])->name('client.dashboard');
Route::get('/client/booking', [\App\Http\Controllers\ClientDashboardController::class, 'booking'])->name('client.booking');
Route::post('/client/booking', [\App\Http\Controllers\ClientDashboardController::class, 'storeBooking'])->name('client.store_booking');
Route::get('/client/online-counseling', [\App\Http\Controllers\ClientDashboardController::class, 'onlineCounseling'])->name('client.online_counseling');
Route::get('/client/self-counseling-ai', [\App\Http\Controllers\ClientDashboardController::class, 'selfCounselingAI'])->name('client.self_counseling_ai');
Route::post('/client/self-counseling-ai/chat', [\App\Http\Controllers\ClientDashboardController::class, 'selfCounselingAIChat'])->name('client.self_counseling_ai.chat');
Route::get('/client/print-profile', [\App\Http\Controllers\ClientDashboardController::class, 'printProfile'])->name('client.print_profile');
Route::get('/client/update-info', [\App\Http\Controllers\ClientDashboardController::class, 'updateInfo'])->name('client.update_info');
Route::put('/client/update-info', [\App\Http\Controllers\ClientDashboardController::class, 'storeUpdateInfo'])->name('client.store_update_info');
Route::get('/client/update-nok', [\App\Http\Controllers\ClientDashboardController::class, 'updateNok'])->name('client.update_nok');
Route::put('/client/update-nok', [\App\Http\Controllers\ClientDashboardController::class, 'storeUpdateNok'])->name('client.store_update_nok');
Route::get('/client/update-occupation', [\App\Http\Controllers\ClientDashboardController::class, 'updateOccupation'])->name('client.update_occupation');
Route::put('/client/update-occupation', [\App\Http\Controllers\ClientDashboardController::class, 'storeUpdateOccupation'])->name('client.store_update_occupation');
Route::get('/client/appointment-history', [\App\Http\Controllers\ClientDashboardController::class, 'appointmentHistory'])->name('client.appointment_history');
Route::get('/client/video-session-history', [\App\Http\Controllers\ClientDashboardController::class, 'videoSessionHistory'])->name('client.video_session_history');
Route::get('/client/video-session-book', [\App\Http\Controllers\ClientDashboardController::class, 'videoSessionBook'])->name('client.video_session_book');
Route::post('/client/video-session-book', [\App\Http\Controllers\ClientDashboardController::class, 'storeVideoSessionBook'])->name('client.store_video_session_book');
Route::get('/client/change-password', [\App\Http\Controllers\ClientDashboardController::class, 'changePassword'])->name('client.change_password');
Route::post('/client/change-password', [\App\Http\Controllers\ClientDashboardController::class, 'storeChangePassword'])->name('client.store_change_password');
Route::post('/client/logout', [\App\Http\Controllers\ClientDashboardController::class, 'logout'])->name('client.logout');
// Custom password reset routes for client
Route::get('/forgot-password', [CustomPasswordResetController::class, 'showRequestForm'])->name('password.request');
Route::post('/forgot-password', [CustomPasswordResetController::class, 'sendResetLink'])->name('password.email');
Route::get('/reset-password', [CustomPasswordResetController::class, 'showResetForm'])->name('password.reset');
Route::post('/reset-password', [CustomPasswordResetController::class, 'reset'])->name('password.update');
// Custom registration routes for admin sign up
Route::get('/register', [CustomRegisterController::class, 'showRegisterForm'])->name('register');
Route::post('/register', [CustomRegisterController::class, 'register'])->name('register.submit');
// Client Registration (public flow)
use App\Http\Controllers\ClientRegistrationController;
Route::get('/client/register', [ClientRegistrationController::class, 'create'])->name('client.register');
Route::post('/client/register', [ClientRegistrationController::class, 'store'])->name('client.register.submit');
// Client Management CRUD (admin flow)
Route::resource('client', ClientController::class);
Route::get('/', function () {
$setting = \App\Models\Setting::first();
return view('system_home', compact('setting'));
});
// Custom login routes for legacy flows
Route::get('/login', [CustomLoginController::class, 'showLoginSelection'])->name('login');
Route::get('/login/client', [CustomLoginController::class, 'showClientLoginForm'])->name('login.client.form');
Route::get('/login/staff', [CustomLoginController::class, 'showStaffLoginForm'])->name('login.staff.form');
Route::post('/login/client', [CustomLoginController::class, 'clientLogin'])->name('login.client');
Route::post('/login/staff', [CustomLoginController::class, 'staffLogin'])->name('login.staff');
Route::post('/logout', [CustomLoginController::class, 'logout'])->name('logout');
Route::get('/dashboard', function () {
return view('dashboard');
})->middleware(['auth', 'verified'])->name('dashboard');
Route::middleware('auth')->group(function () {
Route::get('/profile', [ProfileController::class, 'edit'])->name('profile.edit');
Route::patch('/profile', [ProfileController::class, 'update'])->name('profile.update');
Route::delete('/profile', [ProfileController::class, 'destroy'])->name('profile.destroy');
});
require __DIR__.'/auth.php';
// Counseling dashboard (for staff/counselors)
Route::get('/counseling/dashboard', [\App\Http\Controllers\CounselingDashboardController::class, 'index'])->name('counseling.dashboard');
// Settings module
Route::get('/settings', [SettingController::class, 'index'])->name('settings.index')->middleware('can:settings.view');
Route::get('/settings/edit', [SettingController::class, 'edit'])->name('settings.edit')->middleware('can:settings.edit');
Route::post('/settings/update', [SettingController::class, 'update'])->name('settings.update')->middleware('can:settings.edit');
Route::get('/settings/ui', [SettingController::class, 'uiEdit'])->name('settings.ui')->middleware('can:settings.edit');
Route::post('/settings/ui', [SettingController::class, 'uiUpdate'])->name('settings.ui.update')->middleware('can:settings.edit');
// Booking Management (testing without permission middleware)
Route::get('bookings', [BookingController::class, 'index'])->name('bookings.index');
Route::get('bookings/search-clients', [BookingController::class, 'searchClients'])->name('bookings.search-clients');
Route::get('bookings/create', [BookingController::class, 'create'])->name('bookings.create');
Route::post('bookings', [BookingController::class, 'store'])->name('bookings.store');
Route::post('bookings/{booking}/approve', [BookingController::class, 'approve'])->name('bookings.approve');
Route::put('bookings/{booking}', [BookingController::class, 'update'])->name('bookings.update');
Route::post('bookings/{booking}/reject', [BookingController::class, 'reject'])->name('bookings.reject');
Route::get('counseling-sessions', [CounselingSessionController::class, 'index'])->name('counseling-sessions.index');
Route::get('counseling-sessions/{booking}/start', [CounselingSessionController::class, 'start'])->name('counseling-sessions.start');
Route::patch('counseling-sessions/{booking}/close', [CounselingSessionController::class, 'closeBooking'])->name('counseling-sessions.close');
Route::post('counseling-sessions/{booking}/save-intake', [CounselingSessionController::class, 'saveIntake'])->name('counseling-sessions.save-intake');
Route::get('counseling-sessions-walkin', [CounselingSessionController::class, 'createWalkIn'])->name('counseling-sessions.create-walkin');
Route::post('counseling-sessions-walkin', [CounselingSessionController::class, 'storeWalkIn'])->name('counseling-sessions.store-walkin');
// Client Reports Module
use App\Http\Controllers\ClientReportController;
Route::prefix('client-reports')->name('client-reports.')->group(function () {
Route::get('/demographics', [ClientReportController::class, 'demographics'])->name('demographics');
});
// Debug route to test session persistence
Route::get('test-session', function () {
session(['test' => 'ok']);
return session('test', 'fail');
});