Посоветуйте. Хочу написать свой AccessControl фильтр, чтобы устанавливать доступ к Экшенам с админки.
Идея такая в behaviors каждого контролера, я буду передавать своему фильтру экшены и название контролера, а фильтр Исходя из сохраненных настроек в файле для этого контролера, будет выдавать разрешения доступа к каждому Экшену для настроенных ролей. Это в принципе я понимаю как сделать. Но вопрос стоит в другом, в админке в настройках роли хочу сделать вывод всех контролеров и их экшенов, чтобы настраивать контроль доступа к каждому экшену определенного контролера для определенной роли. Вопрос вот в чем, Как элегантно можно определять какие контролерры существуют и какие у них есть Экшены чтобы задавать им нстройки доступа. Знаю можно каждый раз при заходе в настройки роли проверять все классы в проекте и отбирать только контролеры и смотреть в них экшены., но думаю что это костыльно и должен быть другой метод.
В общем посоветуйте, как быть или накидайте примеров где такое воплощено чтобы посмотреть?
Спасибо
Посоветуйте. Хочу написать свой AccessControl фильтр, чтобы устанавливать доступ к Экшенам с админки.
Re: Посоветуйте. Хочу написать свой AccessControl фильтр, чтобы устанавливать доступ к Экшенам с админки.
Тоже делал такое.
Если есть только экшены-методы, то пройти циклом с RefrectionClass по классам контроллеров.
А универсально если есть controllerMap и экшены, подключаемые через метод actions(), то в цикле придётся создавать объект вроде $controller = Yii::$container->get($class, [$module, $name]) и к (new ReflectionObject($controller))->getMethods() добавлять array_keys($controller->actions()).
Если есть только экшены-методы, то пройти циклом с RefrectionClass по классам контроллеров.
А универсально если есть controllerMap и экшены, подключаемые через метод actions(), то в цикле придётся создавать объект вроде $controller = Yii::$container->get($class, [$module, $name]) и к (new ReflectionObject($controller))->getMethods() добавлять array_keys($controller->actions()).
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()).