developeruz\db_rbac\behaviors\AccessBehavior::interception PHP Метод

interception() публичный Метод

public interception ( $event )
    public function interception($event)
    {
        if (!isset(Yii::$app->i18n->translations['db_rbac'])) {
            Yii::$app->i18n->translations['db_rbac'] = ['class' => 'yii\\i18n\\PhpMessageSource', 'sourceLanguage' => 'ru-Ru', 'basePath' => '@developeruz/db_rbac/messages'];
        }
        $route = Yii::$app->getRequest()->resolve();
        //Проверяем права по конфигу
        $this->createRule();
        $user = Instance::ensure(Yii::$app->user, User::className());
        $request = Yii::$app->getRequest();
        $action = $event->action;
        if (!$this->cheсkByRule($action, $user, $request)) {
            //И по AuthManager
            if (!$this->checkPermission($route)) {
                //Если задан $login_url и пользователь не авторизован
                if (Yii::$app->user->isGuest && $this->login_url) {
                    Yii::$app->response->redirect($this->login_url)->send();
                    exit;
                }
                //Если задан $redirect_url
                if ($this->redirect_url) {
                    Yii::$app->response->redirect($this->redirect_url)->send();
                    exit;
                } else {
                    throw new ForbiddenHttpException(Yii::t('db_rbac', 'Недостаточно прав'));
                }
            }
        }
    }