Я добавил новую опцию roles
в настройки маршрутизации для проверки разрешений для пунктов меню во время рендеринга меню.
Было бы здорово, если бы я мог использовать опцию для проверки авторизации перед выполнением соответствующих контроллеров.
Пример:
some_route:
path: /path/
defaults: { _controller: MyBundle:Controller:action }
option:
roles: [ROLE_MANAGER, ROLE_ADMIN]
Мне нужно проверить, есть ли у пользователя доступ к контроллеру на основе его ролей перед запуском самого контроллера.
Как это возможно? Любые идеи?
ОБНОВЛЕНИЕ
Зачем мне нужна опция roles
?
В проекте есть 4 разные роли и множество маршрутов. Некоторые маршруты защищены и видны только пользователям с определенными ролями.
Пока все проверки авторизации выполняются внутри контроллеров методом denyAccessUnlessGranted()
.
Я также использую KnpMenuBundle для построения меню. И во время рендеринга меню мне нужно проверить доступность каждого элемента для текущего вошедшего пользователя. Если у пользователя нет доступа к элементу, он исключается, и пользователь его не видит.
Чтобы проверить, есть ли у пользователя доступ к элементу, я добавил упомянутую мной опцию, где я определяю роли. которые имеют доступ к маршруту. И эти roles
параметры определяют абсолютно те же роли, что и в чеках в denyAccessUnlessGranted()
. И я думаю, раз у меня уже есть эти настройки ролей, почему бы не использовать их для проверки авторизации контроллера и убрать из них лишний код.