В настоящее время я использую FOSRESTBundle с JMSSerialize для создания RESTFull API (конечно же).
Мой проект — это экстранет для клиентов и администраторов.
Таким образом, я должен отключить просмотр некоторых полей клиентом, видимый только для администраторов.
Я начал с создания этой конфигурации сериализатора для объекта:
AppBundle\Entity\IncidentComment:
exclusion_policy: ALL
properties:
id:
expose: true
groups: [list, details]
author:
expose: true
groups: [list, details]
addedAt:
expose: true
groups: [list, details]
content:
expose: true
groups: [details]
customerVisible:
expose: true
groups: [list_admin, details_admin]
Как видите, группы customerVisible
имеют суффикс _admin
. Это поле должно отображаться только для администраторов.
Я хочу динамически добавлять группы с суффиксом _admin
для установки групп в представлениях, если у пользователя есть, например, роль ROLE_ADMIN или другое условие, не записывая ее при каждом действии каждого из остальных контроллеров.
Я думал о создании настраиваемого обработчика представления. с аргументом контекста безопасности для добавления группы, но я не знаю, правильно ли это.
Как вы думаете, это хороший способ? Есть ли у вас какие-либо предложения по этому поводу?
Кстати, если у кого-то из разработчиков была такая же проблема, я буду рад рассказать, как он ее решил! :)
Спасибо.