Access Control Yii2 + анонимная функция

В Yii2 появилась возможность повесить свою бизнес логику в виде анонимной функции для контроля доступа к странице.
Теперь вы можете делать какие-то действия и возвращать либо true либо false для доступа к странице.

Сделать это можно следующим образом:

public function behaviors()
    {
        return [
            'access' => [
                'class' => AccessControl::className(),
                'rules' => [
                    [
                        'actions'=>['index','view','create','update','delete'],
                        'allow' => true,
                        'roles' => ['@'],
                        'matchCallback' => function ($rule, $action) {
                            return (Yii::$app->user->identity->login=="superuser");
                        }
                    ],
                ],
            ],
        ];
    }

В данном коде мы добавляем в список поведение AccessControl, прописываем actions и ставим анонимную функцию на matchCallback.

Функция должна вернуть true (доступ разрешен) или false (доступ запрещен, 403 Forbidden)

2 Comments

  1. Tester

    // так по приличнее будет

    ‘matchCallback’ => function ($rule, $action) {
    $user = Yii::$app->user->identity;
    return ($user->login==»superuser»);
    }

    Reply
  2. admin (Post author)

    Да, вы правы. Упустил это из виду. Обновил статью

    Reply

Leave a Comment

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