У меня расширенное шаблонное приложение 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, но это не так!
Я что-то упускаю здесь очевидное?
Кстати: я сбросил разрешения и ничего не изменилось