Yii2. Rules. Rbac. Как добавить или исключить action из правила?


При работе с RBAC в Yii2 может быть необходимость закрыть все action из контроллера по определенным правилам, но при этом несколько из них все-таки следует оставить открытыми или, например, закрыть по другим правилам. В этой статье пример решения проблемы.

Ниже приведу метод behaviors() из контроллера:

    public function behaviors()
    {
        $parentBehaviors    =   parent::behaviors() ;

        $self   =   [
            'client.access' => [
                'class'         =>  AccessControl::className(),
                'except'        =>  ['check-similar', 'get-info'], // <-- (except) исключаем два метода из действия правила
                'rules'         =>  [
                    [
                        'allow'     =>  true,
                        'roles'     =>  ['clients.access'],
                    ],
                ],
            ],
             // добавляем новое правило для исключенных методов из действия правила
            'client-checking.access' => [
                'class'         =>  AccessControl::className(),
                'only'          =>  ['check-similar', 'get-info'], // <-- (only) добавляем два метода в действие правила
                'rules'         =>  [
                    [
                        'allow'     =>  true,
                        'roles'     =>  ['backend.access'],
                    ],
                ],
            ],
        ];

        return ArrayHelper::merge($parentBehaviors, $self) ;
    }

Давайте ещё раз.
Первое правило применяется ко всем action внутри контроллера и дочерних ему, КРОМЕ ТЕХ, которые указаны в except.
Второе правило применяется ТОЛЬКО к тем action, которые указаны в only.

Надеюсь смог обьяснить приведенный пример. Если остались вопросы — добро пожаловать в комментарии.

, ,

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *