[yii2] Controller admin e regole di accesso

Salve ho una domanda da farvi , vorrei creare un controller per gestire tutte le operazioni di amministratore che influiscono su altri controller ,utilizzo l’estensione dektrium user che ha un campo flags , volevo sfruttare questo campo per utilizzarlo come utente normale con flags=1 , admin con flags=1 ,e utente bannato con flags=2

Potrei sfruttare questo flags per permettere solo a chi è admin (flags=1) di poter accedre a questo controller ?

in behasviors di un altro controller ho :




 public function behaviors()

    {

        return [

            'verbs' => [

                'class' => VerbFilter::className(),

                'actions' => [

                    'delete' => ['post'],

                ],

            ],




            'access' => [

            'class' => \yii\filters\AccessControl::className(),

            'only' => ['create', 'update','votiinseriti','view'],

            'rules' => [

                // allow all POST requests

                [

                    'allow' => true,

                    'verbs' => ['POST']

                ],

                // allow authenticated users

                [

                    'allow' => true,

                    'roles' => ['@'],

                ],

                // everything else is denied

            ],

            ],

        ];

    }




E’ possibile come roles sostituire la @ con Yii::$app->user->identity->flags==1 ?

No non puoi sostituire roles ma puoi usare matchCallback con una cosa tipo:




'rules' => [

                    [

                        'allow' => true,

                        'matchCallback' => function ($rule, $action) {

                            return Yii::$app->user->identity->flags === 1;

                        }

                    ],

                ],



altri dettagli li trovi qui