Skip to main content

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:

  1. Analisi dei Controller: Scansiona i controller alla ricerca dell'attributo #[AutoPermissions] o del trait HasAutoPermissionsTrait
  2. Generazione dei Permessi: Crea permessi seguendo convenzioni di naming basate su modulo, risorsa e azione
  3. Verificazione Runtime: Il middleware AutoPermissionsMiddleware verifica 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 Shared
  • cont.contracts.create - Creare un contratto nel modulo Contratti
  • bt.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 sistema
  • AutoPermissionsMiddleware - Verificazione runtime dei permessi

Comandi Artisan

  • auto-permissions:generate - Genera i permessi per i controller
  • auto-permissions:cache - Gestisce la cache del sistema

Quick Start

Per iniziare ad utilizzare il sistema AutoPermissions:

  1. 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
}
  1. Genera i permessi:
php artisan auto-permissions:generate --all
  1. I permessi vengono verificati automaticamente tramite il middleware per tutte le richieste al controller.

Prossimi Passi