installing yii2-rbac error You have wrong authManager configuration

1k Views Asked by At

I install yii2-rbac following this site page: https://github.com/dektrium/yii2-rbac/blob/master/docs/installation.md . I do it second time. First time I have done, but I wrote in the config/web.php file:

'modules' => [
    'user' => [
        'class' => 'dektrium\user\Module',
    ],
    //'rbac' => 'dektrium\rbac\RbacWebModule',
    'rbac' => 'dektrium\rbac\RbacConsoleModule',

],

I did not know, that 'rbac' => 'dektrium\rbac\RbacConsoleModule' it must write in the console.php (not in web.php).

'authManager'  => [
        'class'        => 'yii\rbac\DbManager',
        //'defaultRoles' => ['guest'],
    ],

` This code I have wrote in both config files: web.php and console.php, but in the web.php I have wrote 'rbac' => 'dektrium\rbac\RbacConsoleModule' and in console.php I have not wrote it, but all worked: yii2-rbac has been installed succeful. And all transaction have passed succeful. But 'rbac' => 'dektrium\rbac\RbacConsoleModule' in web.php seems to me wrong. It isn't web module, it is console module. Then I have rollbacked transactions (migrate/down) and I have removed rbac at all by removing from composer.json "dektrium/yii2-rbac": "1.0.0-alpha@dev" declaration. All has been removed. Than I began to install rbac second time. After composer installation I have wrote in the web.php:

'modules' => [
    'user' => [
        'class' => 'dektrium\user\Module',
    ],
    'rbac' => 'dektrium\rbac\RbacWebModule',
    //'rbac' => 'dektrium\rbac\RbacConsoleModule',

],

and in console.php I have wrote:

'modules' => [

    'rbac' => 'dektrium\rbac\RbacConsoleModule',

],

The site on yii2 don't work after it!!! I have changed in the web.php "...RbacConsoleModule". Site works. Why it don't work with RbacWebModule? Then I tried to apply transactions, that I have rollbacked before, but raise error: You have wrong authManager configuration enter image description here

What can I do? Help me. Ecscuse me for my English. I'm from Russia.

my console.php:

$config = [
'id' => 'basic-console',
'basePath' => dirname(__DIR__),
'bootstrap' => ['log'],
'controllerNamespace' => 'app\commands',
'components' => [
    'cache' => [
        'class' => 'yii\caching\FileCache',
    ],
    'log' => [
        'targets' => [
            [
                'class' => 'yii\log\FileTarget',
                'levels' => ['error', 'warning'],
            ],
        ],
    ],
    'db' => $db,

    'authManager'  => [
        'class'        => 'yii\rbac\DbManager',
        //'defaultRoles' => ['guest'],
    ]
],

'modules' => [

    'rbac' => 'dektrium\rbac\RbacConsoleModule',

],

//....

my web.php:

    //This all in $component

    'db' => require(__DIR__ . '/db.php'),


    'authManager'  => [
        'class'        => 'yii\rbac\DbManager',
        //'defaultRoles' => ['guest'],
    ],

],

'modules' => [
    'user' => [
        'class' => 'dektrium\user\Module',
    ],
    //'rbac' => 'dektrium\rbac\RbacWebModule',
    'rbac' => 'dektrium\rbac\RbacConsoleModule',

],
2

There are 2 best solutions below

1
On

you need write that:

'components' => [
        'authManager' => [
            'class' => 'dektrium\rbac\components\DbManager',
            'defaultRoles' => ['users'],
        ],
...
0
On

That all! The problem has been decided. It must write authManager section to modules, not in components:

'modules' => [
   'user' => [
      'class' => 'dektrium\user\Module',
    ],

    'authManager'  => [
      'class'        => 'yii\rbac\DbManager',
    //'defaultRoles' => ['guest'],
    ]

    //'rbac' => 'dektrium\rbac\RbacWebModule',
    'rbac' => 'dektrium\rbac\RbacConsoleModule',

 ]