user(); })->middleware('auth:sanctum'); // === ПУБЛИЧНЫЕ РОУТЫ === Route::post('/register', [AuthController::class, 'register']); Route::post('/login', [AuthController::class, 'login'])->name('login'); Route::get('/services', [ServicesController::class, 'publicIndex']); Route::get('/availability', [AvailabilitiesController::class, 'publicAvailability']); Route::get('/categories/{id}', [CategoriesController::class, 'show']); Route::post('/categories', [CategoriesController::class, 'create']); // === ЗАЩИЩЁННЫЕ РОУТЫ === Route::middleware('auth:sanctum')->group(function () { Route::get('/categories', [CategoriesController::class, 'index']); Route::get('/bookings', [BookingsController::class, 'clientIndex']); Route::post('/bookings', [BookingsController::class, 'store']); Route::post('/bookings/{id}/cancel', [BookingsController::class, 'cancel']); // Получить сотрудников Route::get('/users', function (Request $request) { $role = $request->query('role', 'employee'); return \App\Models\User::where('role', $role)->get(); }); }); // === АДМИНСКИЕ РОУТЫ === Route::middleware(['auth:sanctum', 'role:admin'])->prefix('admin')->group(function () { // Услуги Route::get('/services', [ServicesController::class, 'index']); Route::post('/services', [ServicesController::class, 'store']); Route::put('/services/{id}', [ServicesController::class, 'update']); Route::delete('/services/{id}', [ServicesController::class, 'destroy']); // Расписание Route::get('/availabilities', [AvailabilitiesController::class, 'index']); Route::post('/availabilities', [AvailabilitiesController::class, 'store']); Route::post('/availabilities/bulk', [AvailabilitiesController::class, 'bulkStore']); Route::delete('/availabilities/{id}', [AvailabilitiesController::class, 'destroy']); // Бронирования админа ← ЭТОТ БЛОК ОБЯЗАТЕЛЕН! Route::get('/bookings', [BookingsController::class, 'adminIndex']); Route::post('/bookings/{id}/assign', [BookingsController::class, 'assignEmployee']); Route::post('/bookings/{id}/cancel', [BookingsController::class, 'adminCancel']); });