user(); })->middleware('auth:sanctum'); // РЕГИСТРАЦИЯ ТОЛЬКО КЛИЕНТОВ (публичный) Route::post('/register', [UserController::class, 'register']); Route::post('/login', [AuthController::class, 'login']); // Существующие роуты categories Route::get('/categories', [CategoriesController::class, 'index'])->middleware('auth:sanctum'); Route::get('/categories/{id}', [CategoriesController::class, 'show']); Route::post('/categories', [CategoriesController::class, 'create']); // ПУБЛИЧНЫЙ API доступности (без авторизации) Route::get('/availability', [AvailabilitiesController::class, 'publicAvailability']); // КЛИЕНТСКИЕ РОУТЫ БРОНИРОВАНИЙ (auth:sanctum) Route::middleware('auth:sanctum', 'role:admin')->group(function () { Route::post('/bookings', [BookingsController::class, 'store']); Route::post('/bookings/{id}/cancel', [BookingsController::class, 'cancel']); Route::post('/bookings/{id}/cancel', [BookingsController::class, 'adminCancel']); Route::get('/bookings', [BookingsController::class, 'clientIndex']); Route::get('/bookings', [BookingsController::class, 'adminIndex']); }); // АДМИН РОУТЫ - ТОЛЬКО employee/admin (role:employee) Route::middleware(['auth:sanctum', 'role:employee'])->prefix('admin')->group(function () { // CRUD услуги 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']); // CRUD расписание 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']); });