auth tests
This commit is contained in:
36
backend/routes/api.php
Normal file
36
backend/routes/api.php
Normal file
@@ -0,0 +1,36 @@
|
||||
<?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']);
|
||||
});
|
||||
18
backend/routes/api/user-roles.php
Normal file
18
backend/routes/api/user-roles.php
Normal file
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
use App\Http\Controllers\UserRoleController;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
|
||||
// Prefisso `api` e stack `api` sono applicati dal loader in bootstrap/app.php.
|
||||
// I tier `tier.app` / `tier.admin` sono definiti lì come middleware group.
|
||||
|
||||
// Lettura: utente pienamente operativo (verificato + setup completato).
|
||||
Route::middleware('tier.app')->group(function () {
|
||||
Route::apiResource('user-roles', UserRoleController::class)->only(['index', 'show']);
|
||||
Route::get('user-roles/{user_role}/usage', [UserRoleController::class, 'usage']);
|
||||
});
|
||||
|
||||
// Scrittura: solo Admin.
|
||||
Route::middleware('tier.admin')->group(function () {
|
||||
Route::apiResource('user-roles', UserRoleController::class)->only(['store', 'update', 'destroy']);
|
||||
});
|
||||
11
backend/routes/api/users.php
Normal file
11
backend/routes/api/users.php
Normal file
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
use App\Http\Controllers\UserController;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
|
||||
// Gestione utenti (sola lettura): area admin.
|
||||
Route::middleware('tier.admin')->group(function () {
|
||||
Route::get('users', [UserController::class, 'index']);
|
||||
// withTrashed: l'admin può ispezionare anche utenti cestinati/anonimizzati.
|
||||
Route::get('users/{user}', [UserController::class, 'show'])->withTrashed();
|
||||
});
|
||||
@@ -2,7 +2,11 @@
|
||||
|
||||
use Illuminate\Foundation\Inspiring;
|
||||
use Illuminate\Support\Facades\Artisan;
|
||||
use Illuminate\Support\Facades\Schedule;
|
||||
|
||||
Artisan::command('inspire', function () {
|
||||
$this->comment(Inspiring::quote());
|
||||
})->purpose('Display an inspiring quote');
|
||||
|
||||
// Anonimizzazione GDPR degli utenti oltre la retention (richiede lo scheduler attivo).
|
||||
Schedule::command('users:purge')->daily();
|
||||
|
||||
Reference in New Issue
Block a user