Ho problemi a progettare questa applicazione basata su ruoli (o permessi), quando si tratta di capire come gestire azioni che differiscono per ruolo.
Ad esempio, il nostro controller è App\ResourceController
, e modificheremo la risorsa. Esistono 2 ruoli: admin
e user
. Il admin
è autorizzato a modificare ogni campo della risorsa, mentre user
è limitato ad alcuni di essi .
Sto cercando di capire quale sia l'approccio migliore tra l'implementazione di un singolo controller che gestirà entrambi i casi o il routing della richiesta a un controller diverso per la stessa risorsa (come App\Admin\ResourceController
, App\User\ResourceController
).
Il problema con l'approccio a controller singolo è che non si tratta solo di mostrare una forma diversa (con campi limitati) in base al ruolo, ma anche di convalidare campi diversi e altro ancora. Il corpo del controllore assomiglierebbe a una grande dichiarazione if-else
.
Il controller multiplo è l'approccio corretto, oppure ce n'è uno diverso che usa le autorizzazioni invece dei ruoli?