Introduzione al Sistema AutoPermissions
Il sistema AutoPermissions è una funzionalità del modulo Shared che automatizza la generazione e gestione dei permessi nell'applicazione Laravel. Questo sistema elimina la necessità di definire manualmente i permessi per ogni action dei controller, utilizzando invece attributi PHP e convenzioni di naming intelligenti.
Panoramica del Sistema
Caratteristiche Principali
- Generazione Automatica: I permessi vengono generati automaticamente basandosi sui controller e sui metodi (azioni)
- Attributi PHP: Utilizza attributi moderni PHP 8+ per configurare il comportamento
- Caching: Sistema di cache ottimizzato
- Configurazione Flessibile: Supporta personalizzazioni avanzate tramite attributi
- Middleware Integrato: Verificazione automatica dei permessi nelle richieste HTTP
Come Funziona
Il sistema AutoPermissions opera in tre fasi principali:
- Analisi dei Controller: Scansiona i controller alla ricerca dell'attributo
#[AutoPermissions]o del traitHasAutoPermissionsTrait - Generazione dei Permessi: Crea permessi seguendo convenzioni di naming basate su modulo, risorsa e azione
- Verificazione Runtime: Il middleware
AutoPermissionsMiddlewareverifica automaticamente i permessi durante le richieste
Convenzioni di Naming
I permessi generati seguono il pattern:
{modulo}.{risorsa}.{azione}
Esempi:
shared.users.index- Visualizzare la lista utenti nel modulo Sharedcont.contracts.create- Creare un contratto nel modulo Contrattibt.budgets.update- Modificare un budget nel modulo Budgeting Tool
Architettura del Sistema
Componenti del Sistema
Attributi di Configurazione
#[AutoPermissions]- Attiva il sistema su un controller#[PermissionNaming]- Personalizza il naming della risorsa#[CustomPermission]- Override del nome azione per metodi specifici#[ExcludeFromPermissions]- Esclude metodi dalla generazione
Servizi Core
AutoPermissionsService- Logica principale del sistemaAutoPermissionsMiddleware- Verificazione runtime dei permessi
Comandi Artisan
auto-permissions:generate- Genera i permessi per i controllerauto-permissions:cache- Gestisce la cache del sistema
Quick Start
Per iniziare ad utilizzare il sistema AutoPermissions:
- Aggiungi l'attributo al controller:
#[AutoPermissions]
class UserController extends Controller
{
public function index() { } // Genera: shared.users.index
public function create() { } // Genera: shared.users.create
public function store() { } // Genera: shared.users.store
}
- Genera i permessi:
php artisan auto-permissions:generate --all
- I permessi vengono verificati automaticamente tramite il middleware per tutte le richieste al controller.
Prossimi Passi
- 📋 Comandi del Sistema - Guida completa ai comandi Artisan
- ⚙️ Attributi di Configurazione - Dettagli su tutti gli attributi disponibili
- 🛡️ Middleware e Utilizzo - Come funziona la verificazione runtime