@MR_TOLSTIC

Почему не выполняется rbac/init YIi2?

Учусь использовать RBAC. Просмотрел уже кучу примеров. Делаю все в точности как в примере, но не выполняется rbac/init
вот мой rbac контроллер
namespace app\commands;

use Yii;
use yii\console\Controller;

class RbacController extends Controller
{
    public function actionInit()
    {
        $auth = Yii::$app->authManager;

        $rule = new \app\rbac\UserGroupRule();
        $auth->add($rule);

        // добавляем разрешение "createPost"
        $createPost = $auth->createPermission('createPost');
        $createPost->description = 'Create a post';
        $auth->add($createPost);

        // добавляем разрешение "updatePost"
        $updatePost = $auth->createPermission('updatePost');
        $updatePost->description = 'Update post';
        $auth->add($updatePost);

        // добавляем роль "author" и даём роли разрешение "createPost"
        $guest = $auth->createRole('guest');
        $guest->ruleName = $rule->name;
        $auth->add($guest);
        $auth->addChild($guest, $createPost);

        //moderator
        $moderator = $auth->createRole('moderator');
        $moderator->ruleName = $rule->name;
        $auth->add($moderator);
        $auth->addChild($moderator, $updatePost);
        $auth->addChild($moderator, $guest);

        // добавляем роль "admin" и даём роли разрешение "updatePost"
        // а также все разрешения роли "author"
        $admin = $auth->createRole('admin');
        $admin->ruleName = $rule->name;
        $auth->add($admin);
        $auth->addChild($admin, $moderator);

        // Назначение ролей пользователям. 1 и 2 это IDs возвращаемые IdentityInterface::getId()
        // обычно реализуемый в модели User.
        $auth->assign($guest, 3);
        $auth->assign($moderator, 2);
        $auth->assign($admin, 1);
    }
}


В косноли делаю rbac/init, выдает ошибку:

PHP Fatal Error 'yii\base\ErrorException' with message 'Call to a member function add() on null'

in D:\OpenServer\domains\KNDR\commands\RbacController.php:21

Stack trace:
#0 [internal function]: yii\base\ErrorHandler->handleFatalError()
#1 {main}

Где ошибка? Убил полдня, вообще не понимаю в чем проблема. Спасибо!
  • Вопрос задан
  • 790 просмотров
Решения вопроса 2
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Я думаю что Вы взяли гайды по advansed шаблону, и тулите их в basic. Мой совет: хотите меньше гемороя и что бы работали все сторонние решения - не используйте basic никогда.
B внимательнее читайте сноски типа этой:

'components' => [
        'authManager' => [
            'class' => 'yii\rbac\DbManager',
        ],

Note: If you are using yii2-basic-app template, there is a config/console.php configuration file where the authManager needs to be declared additionally to config/web.php. In case of yii2-advanced-app the authManager should be declared only once in common/config/main.php.

из оф гайда www.yiiframework.com/doc-2.0/guide-security-author...
Ответ написан
padlyuck
@padlyuck
ну так английским языком же написано, нельзя вызвать метод у null. Yii::$app->authManager настроен? судя по ошибке - нет. config/console.php покажите
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы