Добрый вечер.
Задача следующая. Нужно чтобы при проверке actionCreate, для роли admin происходила проверка только роли RoleA с правилом RuleA, а для роли manager сначала прогонялась роль RoleA с правилом RuleA, затем RoleB с правилом RuleB. Вот схема ролей.
В моем понимании проверка ролей идет в обратную сторону.
В AuthItemChild
admin - roleA
roleB - roleA
manager - roleB
В контроллере:
'allow' => true,
'roles' => ['roleA'],
'actions' => ['create'],
В данном случае, при вызове actionCreate, для пользователя с ролью manager, вызывается роль, затем рольБ, и для admin также перебираются все роли, сначала рольА, затем рольБ, как исключить для пользователя с ролью админ проверку ролиБ ? Данный пример сильно упростил, хочется понять как правильно строить цепочки из ролей с правилами.
Или же стоит делать так? Что тоже сомнительно, ведь тогда придётся прописывать доступы для каждой роли отдельно.
Что то вроде
'allow' => true,
'roles' => ['admin'],
'actions' => ['create'],
'matchCallback' => function($rule, $action){
return Yii::$app->user->can('roleA');
},
'allow' => true,
'roles' => ['manager'],
'actions' => ['create'],
'matchCallback' => function($rule, $action){
return Yii::$app->user->can('roleC');
}
Заранее спасибо!