Files
Giuseppe Naponiello cc4e174880 auth tests
2026-06-22 14:31:44 +02:00

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']);
});