49 lines
1.7 KiB
PHP
49 lines
1.7 KiB
PHP
<?php
|
|
|
|
use App\Http\Controllers\AuthController;
|
|
use App\Http\Controllers\API\CityController;
|
|
use App\Http\Controllers\API\FavoriteController;
|
|
use App\Http\Controllers\API\TripController;
|
|
use App\Http\Controllers\API\UserController;
|
|
use Illuminate\Support\Facades\Route;
|
|
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| API Routes
|
|
|--------------------------------------------------------------------------
|
|
*/
|
|
|
|
// Authentication routes (public)
|
|
Route::post('/register', [AuthController::class, 'register']);
|
|
Route::post('/login', [AuthController::class, 'login']);
|
|
|
|
// Public city routes (no authentication required)
|
|
Route::prefix('cities')->group(function () {
|
|
Route::get('/search', [CityController::class, 'search']);
|
|
Route::get('/{city}', [CityController::class, 'show']);
|
|
Route::get('/{city}/attractions', [CityController::class, 'attractions']);
|
|
Route::get('/{city}/map-data', [CityController::class, 'mapData']);
|
|
});
|
|
|
|
// Protected routes (require authentication)
|
|
Route::middleware('auth:sanctum')->group(function () {
|
|
// Auth routes
|
|
Route::post('/logout', [AuthController::class, 'logout']);
|
|
Route::get('/user', [AuthController::class, 'user']);
|
|
|
|
// User profile
|
|
Route::get('/profile', [UserController::class, 'show']);
|
|
Route::put('/profile', [UserController::class, 'update']);
|
|
|
|
// Cities (protected actions)
|
|
Route::post('/cities', [CityController::class, 'store']);
|
|
|
|
// Favorites
|
|
Route::get('/favorites', [FavoriteController::class, 'index']);
|
|
Route::post('/favorites/{city}', [FavoriteController::class, 'store']);
|
|
Route::delete('/favorites/{city}', [FavoriteController::class, 'destroy']);
|
|
|
|
// Trips
|
|
Route::apiResource('trips', TripController::class);
|
|
});
|