YII2 проблема с разрешениями и функцией CAN - PullRequest
1 голос
/ 03 июня 2019

У меня расширенное шаблонное приложение YII2 с функцией:

public function isVisible()
    {
        if ($return = \Yii::$app->getUser()->can($this->getWidgetPermission())) {
            return true;
        } else {
            return false;
        }
    }

Эта функция не ведет себя ожидаемым образом с определенным разрешением, если я добавлю следующий код для печати всех пользовательских разрешений и соответствующего разрешения:

public function isVisible()
    {
        if ($return = \Yii::$app->getUser()->can($this->getWidgetPermission())) {
            return true;
        } else {
            pr($this->getWidgetPermission() ,'NON ALLOWED!');
            pr(\Yii::$app->authManager->getPermissionsByUser(\Yii::$app->getUser()->getId()));
            return false;
        }
    }

Я получаю имя разрешения с первым pr () и массив разрешений со вторым pr (). Что странно: массив разрешений включает в себя первый.

Например: вывод первого pr ():

backend\modules\m3p2\widgets\icons\WidgetIconProjects

вывод второго pr ():

[
..,
[name] => backend\modules\m3p2\widgets\icons\WidgetIconProjects
..,
]

ТАК В ТЕОРИИ:

\Yii::$app->getUser()->can($this->getWidgetPermission()

должен вернуть TRUE, но это не так! Я что-то упускаю здесь очевидное?

Кстати: я сбросил разрешения и ничего не изменилось

1 Ответ

1 голос
/ 04 июня 2019

Оказалось, проблема была в кеше. Я не знаю почему, но оба: php yii cache / flush rbacCache и php yii cache / flush-all вообще не чистил кеш Мне пришлось вручную удалить файлы кэша (в моем случае внутри / runtime / rbacCache / rb /)

...