Посоветуйте. Хочу написать свой AccessControl фильтр, чтобы устанавливать доступ к Экшенам с админки.

Всё про контроль доступа пользователей: фильтры, RBAC, проверки
Ответить
b.alex
Сообщения: 8
Зарегистрирован: 2019.06.04, 07:13

Посоветуйте. Хочу написать свой AccessControl фильтр, чтобы устанавливать доступ к Экшенам с админки.

Сообщение b.alex » 2019.10.09, 05:21

Посоветуйте. Хочу написать свой AccessControl фильтр, чтобы устанавливать доступ к Экшенам с админки.
Идея такая в behaviors каждого контролера, я буду передавать своему фильтру экшены и название контролера, а фильтр Исходя из сохраненных настроек в файле для этого контролера, будет выдавать разрешения доступа к каждому Экшену для настроенных ролей. Это в принципе я понимаю как сделать. Но вопрос стоит в другом, в админке в настройках роли хочу сделать вывод всех контролеров и их экшенов, чтобы настраивать контроль доступа к каждому экшену определенного контролера для определенной роли. Вопрос вот в чем, Как элегантно можно определять какие контролерры существуют и какие у них есть Экшены чтобы задавать им нстройки доступа. Знаю можно каждый раз при заходе в настройки роли проверять все классы в проекте и отбирать только контролеры и смотреть в них экшены., но думаю что это костыльно и должен быть другой метод.
В общем посоветуйте, как быть или накидайте примеров где такое воплощено чтобы посмотреть?
Спасибо

Аватара пользователя
ElisDN
Сообщения: 5428
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Посоветуйте. Хочу написать свой AccessControl фильтр, чтобы устанавливать доступ к Экшенам с админки.

Сообщение ElisDN » 2019.10.09, 09:35

Тоже делал такое.

Если есть только экшены-методы, то пройти циклом с RefrectionClass по классам контроллеров.

А универсально если есть controllerMap и экшены, подключаемые через метод actions(), то в цикле придётся создавать объект вроде $controller = Yii::$container->get($class, [$module, $name]) и к (new ReflectionObject($controller))->getMethods() добавлять array_keys($controller->actions()).

b.alex
Сообщения: 8
Зарегистрирован: 2019.06.04, 07:13

Re: Посоветуйте. Хочу написать свой AccessControl фильтр, чтобы устанавливать доступ к Экшенам с админки.

Сообщение b.alex » 2019.10.09, 10:38

ElisDN писал(а):
2019.10.09, 09:35
Тоже делал такое.

Если есть только экшены-методы, то пройти циклом с RefrectionClass по классам контроллеров.

А универсально если есть controllerMap и экшены, подключаемые через метод actions(), то в цикле придётся создавать объект вроде $controller = Yii::$container->get($class, [$module, $name]) и к (new ReflectionObject($controller))->getMethods() добавлять array_keys($controller->actions()).
Спасибо буду пробовать

Ответить