Yii2 RBAC Ошибка DbManager Вызов функции-члена getRole () со значением NULL

Я настроил базу данных и т. Д., Реализовав код SQL для настройки таблиц и скрипт rbac / init для заполнения ролей / разрешений.

У меня есть assign () при создании пользователя, но я продолжаю получать эту ошибку на getRole ():

yii \ base \ ErrorException Вызов функции-члена getRole () со значением NULL

   public function addUser()
{
if($this->validate()) {
$user = new User();
$auth_key = Yii::$app->getSecurity()->generateRandomString(32);
$this->password = Yii::$app->getSecurity()->generatePasswordHash($this->password);

$user->email = $this->email;
$user->password = $this->password;
$user->active = $this->active;
$user->firstname = $this->firstname;
$user->lastname = $this->lastname;
// $user->nickname = $this->nickname;
$user->datecreated = time();
$user->auth_key = $auth_key;
$user->save(false);

$auth = Yii::$app->authManager;
$authorRole = $auth->getRole($this->role);
$auth->assign($authorRole, $user->getId());

return $user;
}else{
return false;
}
}

переменная $ role передается через $ _POST вместе с другими атрибутами пользователя.

Пожалуйста помоги. Благодарю.

0

Решение

Вы ошиблись в этом.

Проблема здесь, кажется, в том, что Yii::$app->authManager не установлен, когда это должно быть. Это, вероятно, означает, что ваш файл конфигурации main.php не содержит правильную информацию.
Он должен содержать следующий компонент:

return [
// ...
'components' => [
'authManager' => [
'class' => 'yii\rbac\DbManager',
],
// ...
],
];

(http://www.yiiframework.com/doc-2.0/guide-security-authorization.html#configuring-rbac-manager)

В примере по ссылке выше PhpManager используется, но в вашем случае вы захотите использовать юй \ RBAC \ DBManager

Это означает, что у вас будет только один загруженный менеджер, а также будут разблокированы все параметры фильтрации действий.

4

Другие решения

Я, кажется, исправил это, заменив

$auth = Yii::$app->authManager;

с

$auth = new DbManager;

Дайте мне знать, если это неправильный путь!

0

По вопросам рекламы [email protected]