54 lines
2.4 KiB
PHP
54 lines
2.4 KiB
PHP
<?php
|
|
|
|
use App\Infrastructure\Http\Controllers\API\User\Auth\AuthController;
|
|
use App\Infrastructure\Http\Controllers\API\Trip\TripController;
|
|
use App\Infrastructure\Http\Controllers\API\E2e\TestSetupController;
|
|
use App\Infrastructure\Http\Controllers\API\PlannableItem\PlannableItemController;
|
|
use App\Infrastructure\Http\Controllers\API\CalendarSlot\CalendarSlotController;
|
|
use App\Infrastructure\Http\Controllers\API\PlannedItem\PlannedItemController;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Route;
|
|
|
|
// Handle preflight OPTIONS requests
|
|
Route::options('{any}', function() {
|
|
return response('', 200);
|
|
})->where('any', '.*');
|
|
|
|
// Public routes
|
|
Route::post('/register', [AuthController::class, 'register']);
|
|
Route::post('/login', [AuthController::class, 'login']);
|
|
|
|
// E2E test routes (development/testing only)
|
|
Route::prefix('e2e/test')->group(function () {
|
|
Route::post('/setup/user', [TestSetupController::class, 'createTestUser']);
|
|
Route::post('/cleanup', [TestSetupController::class, 'cleanup']);
|
|
});
|
|
|
|
// Protected routes
|
|
Route::middleware('auth:sanctum')->group(function () {
|
|
Route::get('/user', function (Request $request) {
|
|
return $request->user();
|
|
});
|
|
Route::get('/profile', [AuthController::class, 'profile']);
|
|
Route::post('/logout', [AuthController::class, 'logout']);
|
|
|
|
// Trip routes
|
|
Route::apiResource('trips', TripController::class);
|
|
|
|
// Plannable items routes
|
|
Route::get('trips/{trip}/plannables', [PlannableItemController::class, 'index']);
|
|
Route::post('trips/{trip}/plannables', [PlannableItemController::class, 'store']);
|
|
Route::get('plannables/{plannableItem}', [PlannableItemController::class, 'show']);
|
|
Route::put('plannables/{plannableItem}', [PlannableItemController::class, 'update']);
|
|
Route::delete('plannables/{plannableItem}', [PlannableItemController::class, 'destroy']);
|
|
|
|
// Calendar slots routes
|
|
Route::get('trips/{trip}/calendar-slots', [CalendarSlotController::class, 'index']);
|
|
Route::put('calendar-slots/{calendarSlot}', [CalendarSlotController::class, 'update']);
|
|
Route::put('calendar-slots/{calendarSlot}/reorder', [CalendarSlotController::class, 'reorder']);
|
|
|
|
// Planned items routes
|
|
Route::post('planned-items', [PlannedItemController::class, 'store']);
|
|
Route::put('planned-items/{plannedItem}', [PlannedItemController::class, 'update']);
|
|
Route::delete('planned-items/{plannedItem}', [PlannedItemController::class, 'destroy']);
|
|
});
|