указываем действия для которых работает правило. а как указать для всех кроме?
Например для действия candidate надо правило это
'rules' => [
[
'allow' => true,
'actions' => ['candidate'],
'matchCallback' => function ($rule, $action) {
return User::canCurrentRole($rule->roles);
},
'roles' => [
User::ROLE_ADMIN,
User::ROLE_HR_HEAD,
User::ROLE_HR_SPECIALIST,
User::ROLE_INSTITUTE_OPERATOR,
User::ROLE_DEPARTMENT_SECRETARY,
User::ROLE_DEPARTMENT_HEAD,
]
],
а для остальных это
[
'allow' => true,
'matchCallback' => function ($rule, $action) {
return User::canCurrentRole($rule->roles);
},
'roles' => [
User::ROLE_ADMIN,
User::ROLE_HR_HEAD,
User::ROLE_HR_SPECIALIST,
User::ROLE_UF_HEAD,
User::ROLE_VUS_EMPLOYEE,
User::ROLE_DEPARTMENT_HEAD,
]
],
],
Allow = false
Это полностью закрывает доступ, а мне надо разделить для одного действия так, а для всех остальных этак
используй only https://www.yiiframework.com/doc/guide/2.0/ru/security-authorization#filtry-kontrola-dostupa
only тоже не подойдет
only для всей конструкции AccessControl
надо для всех, кроме
правила идут сверху вниз по индексу, если сначала приписать для определенных actions, а за тем без указания то это и будет по умолчанию
По логике вещей да, но по факту это не работает [ 'allow' => true, 'actions' => [], ], [ 'allow' => true, 'actions' => ['candidate'], ], ни так [ 'allow' => true, 'actions' => [], ], [ 'allow' => true, 'actions' => ['candidate'], ], для всех роутов срабатывает 'actions' => [],. Ну то есть, получается не важна последовательность, если в массиве правил есть перекрывающее (приоритетное) то оно поглощает менее приоритетное
'actions' => null или вообще без указания должно идти последним
[ 'allow' => true, 'actions' => ['candidate'], 'roles' => [ User::ROLE_ADMIN, User::ROLE_HR_HEAD, ] ], [ 'allow' => true, 'actions' => null, 'roles' => [ User::ROLE_ADMIN, User::ROLE_VUS_EMPLOYEE, ] ], авторизуюсь под User::ROLE_VUS_EMPLOYEE, работает и candidate и все остальные а должно работать все кроме candidate
я тебе выше уже пример с документации приводил https://www.yiiframework.com/doc/guide/2.0/ru/security-authorization#filtry-kontrola-dostupa попробуй only, Я не думаю что у тебя в контроллере 100500 экшенов и трудно их указать
Обсуждают сегодня