Search code examples
phpyii2rbac

yii\rbac\DbManager setup


Trying to set up the DbManager for Yii2. there are lots of threads about the php version, however, not much about the DB version.

What I do know:

Step 1: migrate script

./yii migrate --migrationPath=@yii/rbac/migrations/

Step 2: configuration

...
'authManager' => [
    'class' => 'yii\rbac\DbManager',
    'defaultRoles' => ['admin', 'user', 'guest'],
],
...

Step 3: set up roles / rules

????

Solution

  •     $auth = Yii::$app->authManager;
    
        // add "createPost" permission
        $createPost = $auth->createPermission('createPost');
        $createPost->description = 'Create a post';
        $auth->add($createPost);
    
        // add "updatePost" permission
        $updatePost = $auth->createPermission('updatePost');
        $updatePost->description = 'Update post';
        $auth->add($updatePost);
    
        // add "author" role and give this role the "createPost" permission
        $author = $auth->createRole('author');
        $auth->add($author);
        $auth->addChild($author, $createPost);
    
        // add "admin" role and give this role the "updatePost" permission
        // as well as the permissions of the "author" role
        $admin = $auth->createRole('admin');
        $auth->add($admin);
        $auth->addChild($admin, $updatePost);
        $auth->addChild($admin, $author);
    
        // Assign roles to users. 1 and 2 are IDs returned by IdentityInterface::getId()
        // usually implemented in your User model.
        $auth->assign($author, 2);
        $auth->assign($admin, 1);
    

    http://www.yiiframework.com/doc-2.0/guide-security-authorization.html