52 lines
2.5 KiB
PHP
52 lines
2.5 KiB
PHP
<?php
|
|
|
|
use App\Http\Controllers\UserController;
|
|
use App\Http\Controllers\ServicesController;
|
|
use App\Http\Controllers\BookingsController;
|
|
use App\Http\Controllers\AvailabilitiesController;
|
|
use App\Http\Controllers\CategoriesController;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Route;
|
|
use App\Http\Controllers\AuthController;
|
|
|
|
Route::get('/user', function (Request $request) {
|
|
return $request->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']);
|
|
});
|