Yii2 RBAC на основе разрешений

Я разрабатываю систему, но мне нужно дать пользователю-администратору право создавать роли и назначать им набор разрешений.

В настоящее время в RBAC

public function behaviors()
{
    return [
        'access' => [
            'class' => AccessControl::className(),
            'rules' => [
                [
                    'actions' => ['index','view'], // these action are accessible 
                                                   //only the yourRole1 and yourRole2
                    'allow' => true,
                    'roles' => ['yourRole1', 'yourRole2'],
                ],
                [    // all the action are accessible to superadmin, admin and manager
                    'allow' => true,  
                    'roles' => ['superAdmin', 'admin', 'manager'],
                ],   
            ],
        ],
    ];
}

Однако в идеале мне нужно

public function behaviors()
    {
        return [
            'access' => [
                'class' => AccessControl::className(),
                'rules' => [
                    [
                        'actions' => ['index','view'], 
                        'allow' => true,
                        'permission' => ['canView'],
                    ],
                    [    
                        'actions' => ['update','delete'], // these action are accessible 
                        'allow' => true,  
                        'permission' => ['canDelete', 'canUpdate'],
                    ],   
                ],
            ],
        ];
    }

Делая это и создавая набор разрешений, пользователь-администратор может затем создавать роли, назначать разрешения и назначать роли пользователям.

Кто-нибудь знает пакет для yii2, который делает это?


person George Hallam    schedule 11.11.2017    source источник
comment
Пробовали ли вы использовать компонент rbac по умолчанию в Yii2.. ???   -  person scaisEdge    schedule 12.11.2017


Ответы (1)


Фильтр AccessControl, который вы используете, уже позволяет вам сделать это через поле «разрешения».

[
    'actions' => ['index','view'], 
    'allow' => true,
    'permissions' => ['canView'],
],

Ознакомьтесь с документацией: http://www.yiiframework.com/doc-2.0/yii-filters-accessrule.html#$permissions-detail

person Patrick    schedule 12.11.2017