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

Использую FOSUserBundle и встроенные в него группы, каждая из которых имеет свой набор ролей. Стоит задача сделать административный интерфейс для назначения группам ролей (из security.role_hierarchy.roles). (Бандлы для генерации админки от sonata не использую.) Т.е. нужно добавить в форму создания/редактирования группы поле множественного выбора ролей.

Каким путем это правильно сделать:
  1. Полностью переопределить GroupController из FOSUserBundle и прямо из контроллера сформировать нужную форму? (в манах симфы и бандла настоятельно не рекомендуют дублировать логику).

  2. Пойти по пути переопределения формы редактирования/добавления группы и добавить в нее новое поле выбора ролей? Но тут возникают вопросы:
    • как получить из формы список всех существующих в системе ролей?
    • как получить из формы список ролей конкретной группы, чтобы сделать поле choice Field Type и отметить выбранными уже назначенные роли?



Или может быть есть еще какой-то трувей для решения этой задачи?
  • Вопрос задан
  • 2876 просмотров
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Создать для формы тип RoleType или что-то в этом духе, где формировать список доступных ролей. Список ролей, насколько я помню, доступен через DI как security.role_hierarchy.roles и его можно заинджектить прямо в конструктор RoleType (использовать FromType как сервис мол).
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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