Отображение элементов на панели инструментов в соответствии с ролью пользователя

Я новичок в Symfony2, и для нужд моей компании я использую пакеты Sonata Admin и User.

Я хотел бы знать, можно ли скрыть или отобразить элементы на панели инструментов в соответствии с ролью зарегистрированного пользователя.

Например, у меня есть несколько объектов, которыми управляет Sonata AdminBundle (управление пользователем, компанией, миссией, сайтом и т. д.), и я хочу отображать управление пользователями только суперадминистратору, управление компанией и сайтом — другой роли ( SITE_ADMIN например) и миссии на третью роль.

Вы когда-нибудь сталкивались с такой ситуацией? Не могли бы вы дать мне решение или подсказки, чтобы перейти непосредственно к решению?

Большое спасибо,

Энес


person Enessari    schedule 08.07.2013    source источник


Ответы (2)


Используйте обработчик ролей и включите связанные с пользователем права только для, например, группа «Администраторы» (создайте ее). Затем назначьте пользователей-администраторов в группу администраторов. Администратор Sonata примет ограничения и будет отображать элементы панели управления только для администраторов.

person TautrimasPajarskas    schedule 08.07.2013
comment
Да, вы должны установить sonata_admin: security: handler: sonata.admin.security.handler.role в своей конфигурации. Затем вы сможете установить необходимые роли для доступа к различным частям администратора. - person Pierre de LESPINAY; 11.07.2013
comment
Большое спасибо за ваши ответы, немного поздно, но теперь у меня все хорошо :) - person Enessari; 30.07.2013

Кроме того, вы можете скрывать и отображать блоки в юзерборде следующим образом:

# app/config/config.yml
sonata_admin:
dashboard:
    groups:
        acme.admin.group.content:
            label: acme.admin.group.content
            label_catalogue: AcmeDemoBundle
            items:
                - sonata.admin.post
        acme.admin.group.blog:
            items: ~
            item_adds:
                - sonata.admin.page
            roles: [ ROLE_ONE, ROLE_TWO ]
        acme.admin.group.misc: ~

Как упоминалось в документах.

Обратите внимание, что это изменяет только видимость блока, а не доступность. Если бы не было ограничений, люди все равно могли бы открыть ссылку в браузере, если они ее знают.

Если вы используете предыдущий ответ, реализующий sonata.admin.security.handler.role, блок должен быть автоматически скрыт, если у пользователя нет правильной роли.

person webDEVILopers    schedule 08.12.2014