37 lines
1.8 KiB
PHP
37 lines
1.8 KiB
PHP
<?php
|
|
|
|
use App\Http\Controllers\AuthController;
|
|
use Illuminate\Support\Facades\Route;
|
|
|
|
// File "core": rotte di sessione e pubbliche trasversali. Le rotte per modello
|
|
// stanno in routes/api/*.php, caricate automaticamente dal then: in bootstrap/app.php
|
|
// (prefisso `api` + tier riusabili `tier.app` / `tier.admin`).
|
|
|
|
$AUTH = 'auth:sanctum';
|
|
|
|
// -----------------------------------------------------------------------
|
|
// Rotte pubbliche (nessun auth), protette dal throttling.
|
|
// Limiter `public` definito in App\Providers\AppServiceProvider::boot()
|
|
// (60 req/min per IP) — modificare lì il limite.
|
|
// -----------------------------------------------------------------------
|
|
Route::middleware('throttle:public')->group(function () {
|
|
// Solo endpoint GET (index/show) leggibili da chiunque.
|
|
});
|
|
|
|
// -----------------------------------------------------------------------
|
|
// Tier "transitional": autenticato, MA setup eventualmente incompleto
|
|
// (password forzata da cambiare e/o 2FA non ancora configurata).
|
|
//
|
|
// ⚠️ NON aggiungere `setup.complete` qui: queste rotte devono restare
|
|
// raggiungibili PROPRIO durante il setup, altrimenti deadlock. In particolare
|
|
// il frontend legge GET /user per scoprire `setup_status` e decidere cosa
|
|
// mostrare. Le azioni di setup vero (cambio password, abilitazione 2FA) e la
|
|
// verifica email le registra Fortify, già auth-only e fuori da `setup.complete`.
|
|
// -----------------------------------------------------------------------
|
|
Route::middleware($AUTH)->group(function () {
|
|
Route::get('/user', [AuthController::class, 'me']);
|
|
// Sovrascrive la rotta logout di Fortify (registrata dopo → precedenza).
|
|
Route::post('/logout', [AuthController::class, 'logout']);
|
|
Route::delete('/account', [AuthController::class, 'destroyAccount']);
|
|
});
|