first commit
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
<?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);
|
||||
});
|
||||
@@ -0,0 +1,8 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Foundation\Inspiring;
|
||||
use Illuminate\Support\Facades\Artisan;
|
||||
|
||||
Artisan::command('inspire', function () {
|
||||
$this->comment(Inspiring::quote());
|
||||
})->purpose('Display an inspiring quote');
|
||||
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
use App\Http\Controllers\CityController;
|
||||
use App\Http\Controllers\Auth\LoginController;
|
||||
use App\Http\Controllers\Auth\RegisterController;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
|
||||
// Homepage
|
||||
Route::get('/', function () {
|
||||
// Get popular cities with thumbnails
|
||||
$popularCities = \App\Models\City::whereNotNull('thumbnail_url')
|
||||
->inRandomOrder()
|
||||
->limit(4)
|
||||
->get(['id', 'name', 'slug', 'country', 'thumbnail_url']);
|
||||
|
||||
return view('welcome', compact('popularCities'));
|
||||
});
|
||||
|
||||
// Authentication Routes
|
||||
Route::get('/login', [LoginController::class, 'showLoginForm'])->name('login');
|
||||
Route::post('/login', [LoginController::class, 'login']);
|
||||
Route::post('/logout', [LoginController::class, 'logout'])->name('logout');
|
||||
|
||||
Route::get('/register', [RegisterController::class, 'showRegistrationForm'])->name('register');
|
||||
Route::post('/register', [RegisterController::class, 'register']);
|
||||
|
||||
// City pages (web views)
|
||||
Route::get('/cities/{city}', [CityController::class, 'show'])->name('cities.show');
|
||||
Reference in New Issue
Block a user