===== STRUCTURE ===== . ├── api.php ├── console.php ├── output.txt └── web.php 1 directory, 4 files ===== CONTENU DES FICHIERS ===== ----- ./output.txt ----- ----- ./web.php ----- name('login'); Route::post('/login', function (Request $request) { $credentials = $request->only('email', 'password'); if (Auth::attempt($credentials)) { $request->session()->regenerate(); return redirect()->intended('/admin/dashboard'); } return back()->withErrors([ 'email' => 'Identifiants invalides.', ]); }); Route::get('/', function () { return redirect('/admin/dashboard'); }); Route::prefix('admin')->name('admin.')->middleware(['auth', 'adminOrManager'])->group(function () { // Dashboard Route::get('/dashboard', [DashboardController::class, 'index'])->name('dashboard'); // Users Route::get('/users', [UserController::class, 'index'])->name('users.index'); Route::get('/users/create', [UserController::class, 'create'])->name('users.create'); Route::post('/users', [UserController::class, 'store'])->name('users.store'); Route::get('/users/{user}/edit', [UserController::class, 'edit'])->name('users.edit'); Route::put('/users/{user}', [UserController::class, 'update'])->name('users.update'); Route::get('/users/{user}', [UserController::class, 'show'])->name('users.show'); Route::get('/users/{user}/pdf', [UserController::class, 'exportPdf'])->name('users.pdf'); // Cities Route::resource('cities', CityController::class); Route::post('/cities/{city}/delegues', [CityController::class, 'attachDelegues'])->name('cities.delegues'); // Listings Route::resource('listings', ListingController::class); // Visits Route::get('/visits/progress', [VisitController::class, 'progress'])->name('visits.progress'); Route::get('/visits', [VisitController::class, 'index'])->name('visits.index'); Route::get('/visits/export', [VisitController::class, 'exportXls'])->name('visits.export'); Route::get('/visits/{visit}', [VisitController::class, 'show'])->name('visits.show'); Route::put('/visits/{visit}/status', [VisitController::class, 'updateStatus'])->name('visits.status'); // Deplacements Route::resource('deplacements', DeplacementController::class); // Permissions Route::get('/permissions', [PermissionController::class, 'index'])->name('permissions.index'); Route::get('/permissions/{permission}', [PermissionController::class, 'show'])->name('permissions.show'); Route::put('/permissions/{permission}/status', [PermissionController::class, 'updateStatus'])->name('permissions.status'); // Salaries Route::get('/salaries', [SalaryController::class,'index'])->name('salaries.index'); Route::get('/salaries/{user}', [SalaryController::class,'show'])->name('salaries.show'); Route::put('/salaries/{user}/update', [SalaryController::class,'updateFixed'])->name('salaries.update'); Route::put('/salaries/prime/update', [SalaryController::class,'updatePrime'])->name('salaries.prime'); //Location Route::get('/users/{user}/tracking', [UserController::class, 'tracking'])->name('tracking'); // routes/web.php (ou admin.php si tu as un group admin) Route::get('tickets', [App\Http\Controllers\Admin\TicketController::class, 'index'])->name('tickets.index'); Route::get('tickets/{visit}', [App\Http\Controllers\Admin\TicketController::class, 'show'])->name('tickets.show'); Route::put('tickets/{visit}/update', [App\Http\Controllers\Admin\TicketController::class, 'update'])->name('tickets.update'); }); ----- ./console.php ----- comment(Inspiring::quote()); })->purpose('Display an inspiring quote'); ----- ./api.php ----- group(function () { Route::post('register', [AuthController::class, 'register']); Route::post('login', [AuthController::class, 'login']); Route::middleware('auth:api')->group(function () { Route::get('profile', [AuthController::class, 'profile']); Route::post('logout', [AuthController::class, 'logout']); Route::post('refresh', [AuthController::class, 'refresh']); }); }); /* |-------------------------------------------------------------------------- | 🔒 ROUTES PROTÉGÉES (auth:api) |-------------------------------------------------------------------------- */ Route::middleware('auth:api')->group(function () { /* |-------------------------------------------------------------------------- | 👤 PROFIL UTILISATEUR |-------------------------------------------------------------------------- */ Route::get('/profiles', [UserController::class, 'index']); Route::get('/profile', [UserController::class, 'show']); Route::put('/profile', [UserController::class, 'update']); Route::put('/profile/update', [UserController::class, 'updateProfile']); /* |-------------------------------------------------------------------------- | 🗺️ VILLES & LISTINGS |-------------------------------------------------------------------------- */ Route::get('/cities', [CityController::class, 'userCities']); Route::get('/listings', [ListingController::class, 'index']); Route::get('/listings/{id}', [ListingController::class, 'show']); Route::post('/listings', [ListingController::class, 'store']); Route::put('/listings/{id}', [ListingController::class, 'update']); Route::patch('/listings/{id}/coordinates', [ListingController::class, 'updateCoordinates']); /* |-------------------------------------------------------------------------- | 👣 VISITES |-------------------------------------------------------------------------- */ Route::get('/visit-types', [VisitTypeController::class, 'index']); Route::get('/visits', [VisitController::class, 'index']); Route::get('/visits/valide', [VisitController::class, 'valideVisits']); Route::get('/visits/invalide', [VisitController::class, 'invalideVisits']); Route::get('/visits/double', [VisitController::class, 'doubleVisits']); Route::post('/visits', [VisitController::class, 'store']); Route::get('/visits/{id}', [VisitController::class, 'show']); Route::put('/visits/{id}', [VisitController::class, 'update']); Route::delete('/visits/{id}', [VisitController::class, 'destroy']); // start visit Route::post('/visits-progress/start', [VisitInProgressController::class, 'start']); // finish visit Route::post('/visits-progress/finish', [VisitInProgressController::class, 'finish']); // annuler visite (optionnel mais intelligent) Route::post('/visits-progress/cancel', [VisitInProgressController::class, 'cancel']); /* |-------------------------------------------------------------------------- | 💊 PRODUITS |-------------------------------------------------------------------------- */ Route::get('/products', [ProductController::class, 'index']); /* |-------------------------------------------------------------------------- | 🕒 DÉPLACEMENTS |-------------------------------------------------------------------------- */ Route::get('/deplacements', [DeplacementController::class, 'myDeplacements']); Route::patch('/deplacements/{id}/status', [DeplacementController::class, 'updateStatus']); /* |-------------------------------------------------------------------------- | 🕓 PERMISSIONS (ABSENCES) |-------------------------------------------------------------------------- */ Route::get('/permissions', [PermissionController::class, 'index']); Route::post('/permissions', [PermissionController::class, 'store']); /* |-------------------------------------------------------------------------- | 💸 NOTES DE FRAIS |-------------------------------------------------------------------------- */ Route::get('/expenses', [ExpenseController::class, 'index']); Route::post('/expenses', [ExpenseController::class, 'store']); Route::get('/expense-dashboard', [ExpenseDashboardController::class, 'index']); /* |-------------------------------------------------------------------------- | 🧾 ACTIONS PROMOTIONNELLES |-------------------------------------------------------------------------- */ Route::get('/actions', [ActionRequestController::class, 'index']); Route::post('/actions', [ActionRequestController::class, 'store']); /* |-------------------------------------------------------------------------- | 🎯 OBJECTIFS & CYCLES |-------------------------------------------------------------------------- */ Route::get('/cycles', [CycleController::class, 'index']); Route::get('/objectives', [ObjectiveController::class, 'index']); Route::get('/program', [WeeklyProgramController::class, 'userProgram']); /* |-------------------------------------------------------------------------- | 📅 RENDEZ-VOUS |-------------------------------------------------------------------------- */ Route::get('/appointments', [AppointmentController::class, 'index']); Route::post('/appointments', [AppointmentController::class, 'store']); Route::delete('/appointments/{id}', [AppointmentController::class, 'destroy']); /* |-------------------------------------------------------------------------- | 📊 DASHBOARD |-------------------------------------------------------------------------- */ Route::get('/dashboard', [DashboardController::class, 'index']); Route::get('/today', [VisitController::class, 'today']); /* |-------------------------------------------------------------------------- | 🔔 NOTIFICATIONS |-------------------------------------------------------------------------- */ Route::get('/notifications', [NotificationController::class, 'index']); Route::get('/notifications/unread-count', [NotificationController::class, 'unreadCount']); Route::post('/notifications/{id}/read', [NotificationController::class, 'markAsRead']); Route::post('/notifications/read-all', [NotificationController::class, 'markAllAsRead']); /* |-------------------------------------------------------------------------- | Location |-------------------------------------------------------------------------- */ Route::post('/locations', [LocationController::class, 'store']); Route::post('/locations/bulk', [LocationController::class, 'bulk']); Route::post('/work/start', [WorkSessionController::class, 'start']); Route::post('/work/end', [WorkSessionController::class, 'end']); }); /* |-------------------------------------------------------------------------- | 🌐 ROUTES PUBLIQUES |-------------------------------------------------------------------------- */ Route::get('/version', function () { return response()->json([ 'app' => 'GloPharma API', 'version' => 'v1.0.0', 'maintained_by' => 'GloPharma Team 🇲🇦' ]); });