matchcallback redirect

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
kukuruku
Сообщения: 1318
Зарегистрирован: 2011.02.14, 11:36

matchcallback redirect

Сообщение kukuruku »

Код: Выделить всё

[
                        'actions' => ['test'],
                        'allow' => true,
                        'roles' => ['@'],
                        'matchCallback' => function() {
                            if (Yii::$app->user->identity->group == User::ROLE_USER) {
                                return $this->redirect(['/site/forbidden']);
                            }

                        },

                    ],
при такой записи сначала выполняется actionTest а дальше уже редирект
если делать редирект в denyCallback, тогда редирект применится на все запреты, а я хочу только для actionTest
как реализовать?
unknownby
Сообщения: 749
Зарегистрирован: 2019.11.05, 16:34
Контактная информация:

Re: matchcallback redirect

Сообщение unknownby »

kukuruku писал(а): 2020.08.26, 18:46 при такой записи сначала выполняется actionTest а дальше уже редирект
если делать редирект в denyCallback, тогда редирект применится на все запреты, а я хочу только для actionTest
как реализовать?
Какова вообще цель данного matchCallback? Указать, доступно ли действие или нет?
Разве сам RBAC не перенаправит, если указать доступы по конкретной роли?
Из примера следует, что для действия test есть права только у роли admin, остальным должна отобразиться страница с ошибкой 403

Код: Выделить всё

 'actions' => ['test'],
 'allow' => true,
 'roles' => ['admin'], 
kukuruku
Сообщения: 1318
Зарегистрирован: 2011.02.14, 11:36

Re: matchcallback redirect

Сообщение kukuruku »

в этом проекте нету ролей в том виде, какой требует RBAC, поэтому приходится делать такую проверку
но проблема не в этом
по умолчанию идет запрет в виде сообщения что доступ запрещен
а я хочу для определенных action при определенных условиях перенаправить юзера на определенную страницу
unknownby
Сообщения: 749
Зарегистрирован: 2019.11.05, 16:34
Контактная информация:

Re: matchcallback redirect

Сообщение unknownby »

kukuruku писал(а): 2020.08.27, 10:21 в этом проекте нету ролей в том виде, какой требует RBAC, поэтому приходится делать такую проверку
но проблема не в этом
по умолчанию идет запрет в виде сообщения что доступ запрещен
а я хочу для определенных action при определенных условиях перенаправить юзера на определенную страницу
Почему этого не сделать внутри самих action?
Если условия похожие (или оно одно), и перенаправляет на одну и ту же страницу, то можно сделать метод, который будет внутри контроллера и при условиях срабатывать и перенаправлять куда надо, чтоб не дублировать строки кода. Как вариант.
kukuruku
Сообщения: 1318
Зарегистрирован: 2011.02.14, 11:36

Re: matchcallback redirect

Сообщение kukuruku »

как я понял matchCallback не предназначен для этого
или в самом action редиректить или в beforeAction
unknownby
Сообщения: 749
Зарегистрирован: 2019.11.05, 16:34
Контактная информация:

Re: matchcallback redirect

Сообщение unknownby »

kukuruku писал(а): 2020.08.27, 16:12 как я понял matchCallback не предназначен для этого
The callback should return a boolean value indicating whether this rule should be applied.
Обратный вызов должен возвращать логическое значение, указывающее, следует ли применять это правило.

Лучше из action редикректить куда нужно по условию
Ответить