Как сделать динамический контроль доступа в Symfony2?

Мне нужно что бы в админке суперпользователю были доступны все страницы. А остальным только те что разрешил админ. Допустим для пользователя Сергей он может отметить доступные страницы /admin/news/, /admin/articles/. А так же тоже самое он может выставить для Группы пользователей. По умолчанию всем пользователям доступна только главная страница.
Соответственно вопросы
1. как можно реализовать контроль доступа по путям
2. как можно загрузить в интерфейс админа все пути что начинаются с /admin/*
3. Как можно задать Названия для путей, например вместо /admin/news/ выводить Новости. И жетально что бы это вместе с путями где то прописывалось
  • Вопрос задан
  • 506 просмотров
Пригласить эксперта
Ответы на вопрос 2
@bears
Нет стандартного решения данной проблемы. Я сделал так: Сохранил все роуты админки в БД, + роли тоже в БД и между ними связь многие-ко-многим, и ловлю событие onKernelRequest и там проверяю, является ли текущий роут "управляемым", если да, то идет проверка - есть ли у роли авторизованного пользователя связь с текущим роутом, если нет то бросаем исключение с кодом 403, если есть то все OK. Разумеется, в админке есть страница, где перечислено все что есть в админке и разрешения на просмотр/редактирование/удаление для каждой роли.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы