Как реализовать rbac dbmanager в yii2-advanced?

В basic реализовать RBAC получилось. Сегодня начал изучать advanced и не получается реализовать RBAC.
Как я делаю:
Шаг 1: Прописал в /common/config/main.php
'components' => [
        'authManager' => [
            'class' => 'yii\rbac\DbManager',
        ],
    ],

Шаг 2: Запустил миграцию. Таблицы добавились
php yii migrate --migrationPath=@yii/rbac/migrations/

Шаг 3: В /console/controllers/ создал класс RbacController.php
<?php

namespace yii\console\controllers;

use Yii;
use yii\console\Controller;
use common\models\User;

class RbacController extends Controller {

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

        // Удаляем старые данные из бд
        $auth->removeAll(); 
        
        // Создадим роли админа и пользователя
        $admin = $auth->createRole('admin');
        $user = $auth->createRole('user');
        
        // запишем их в БД
        $auth->add($admin);
        $auth->add($user);
        
        // Назначаем роль admin пользователю с ID 1
        $auth->assign($admin, 1);
}

Шаг 4: Выполняю в консоле php yii rbac/init. Выводится ошибка
Exception 'yii\base'UnkownClassException' with message 'Unable to find 'console\controllers\RbacController.php' in file: D:\domains\yii2/console/controllers\RbacController.php. Namespace missing?'

in D:\Openserver\domains\yii2\vendor\yiisoft\yii\BaseYii.php:291

Что я делаю не так? может я что-то не так написал в RbacController.php или пропустил какой-то шаг?
  • Вопрос задан
  • 1863 просмотра
Решения вопроса 1
kimono
@kimono
Web developer
У вас контроллер в неймспейсе console/commands, а нужно чтобы был в console/controllers.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Skycaptain
переместите
'components' => [
    'authManager' => [
        'class' => 'yii\rbac\DbManager',
    ],
],

в common/config/main.php
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы