Questo è il mio primo post, non sono uno sviluppatore ma spesso ho l’esigenza di crearmi delle interfacce web per poter gestire o meglio far gestire alcuni sistemi. Dopo aver provato diversi Framework in diversi linguaggi ho deciso di provare anche Yii2.
Ho chiaro come applicare il filtro autorizzazione AccessControl per singolo Controller ma se io volessi applicarlo direttamente ad un intero modulo come posso fare?
Grazie realtebo della risposta ma non ho capito dove applicare la beforeAction tuttavia credo di procedere in questo modo:
Per il modulo creo un controller che estende quello base con l’aggiunta del metodo behaviors() e baso tutti i controlli del modulo con il nuovo controller.
La via suggerita da realtebo è forse migliore se vuoi lavorare a livello di modulo.
Nella tua classe "Module" che estende "\yii\base\Module" puoi dichiarare il metodo "beforeAction", in questo modo tutte le action del tuo modulo passeranno per quel metodo.
class Module extends \yii\base\Module {
...
public function beforeAction($action) {
if (!parent::beforeAction($action)) {
return false;
}
if (!$this->checkAccess()) {
throw new ForbiddenHttpException('Non puoi accedere a questa pagina.');
}
}
...
}