Sonata Admin+ACL-Разные панели управления для разных ролей

Что ж, я пытаюсь добиться этого, используя пакет администрирования сонаты + fosuser + ACL.

Три уровня пользователей — обычный пользователь ---- персонал ---- супер администратор Когда каждый пользователь входит в систему, каждый пользователь перенаправляется на панель администратора, но показывает только некоторые элементы администратора (список), а пользователю, отличному от суперадминистратора, разрешено только редактировать собственные предметы

Я реализовал все, как указано здесь http://sonata-project.org/bundles/admin/2-3/doc/reference/security.html

Я выполнил все команды acl (инициализация и т. Д.), Все работает нормально.

Но роли администратора сонаты настолько запутаны. Вместо того, чтобы редактировать роли каждого отдельного пользователя, я назначаю пользователя группам (создавая 3 обычные группы, персонал и суперадминистратор) и назначаю ему (группе) роли.

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

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

Итак, как мне достичь того, чего я хочу? Спасибо.

текущие роли здесь http://i59.tinypic.com/iwlkjt.jpg


person TheGooooogle    schedule 08.12.2014    source источник


Ответы (1)


Вы должны установить разрешения для каждого администратора отдельно. На вашем изображении я не вижу пакетов администратора для управления разрешениями, кроме пакета отношений (GalleryHasMedia), который отображается, когда вы работаете с отношением «многие ко многим». У вас есть права только на ROLE_SONATA_MEDIA_ADMIN_GALLERY_HAS_MEDIA для ПЕРСОНАЛА. Я могу себе представить, что у вас нет блоков для этого отношения на панели инструментов или в меню левой боковой панели.

Прежде всего, вы должны запускать эту команду каждый раз, когда добавляете любого администратора (если вы этого не сделали):

app/console sonata:admin:setup-acl

Предполагая, что у вас есть SonataMediaBundle, у вас должны быть, среди прочего, следующие РОЛИ:

ROLE_SONATA_MEDIA_ADMIN_GALLERY_GUEST
ROLE_SONATA_MEDIA_ADMIN_GALLERY_STAFF
ROLE_SONATA_MEDIA_ADMIN_GALLERY_EDITOR
ROLE_SONATA_MEDIA_ADMIN_GALLERY_ADMIN

Предполагая, что вы настроили свои разрешения следующим образом:

sonata_admin:
    security:
        handler: sonata.admin.security.handler.acl
        # acl security information
        information:
            GUEST:    [VIEW, LIST]
            STAFF:    [EDIT, LIST, CREATE]
            EDITOR:   [OPERATOR, EXPORT]
            ADMIN:    [MASTER]

        admin_permissions: [CREATE, LIST, DELETE, UNDELETE, EXPORT, OPERATOR, MASTER]

Итак, если вы хотите, чтобы пользователь X:

  • чтобы увидеть список галерей, вы должны дать ему разрешения GUEST, указанные для данного администратора.
  • чтобы просмотреть список Галереи, редактировать собственные элементы и создавать новые, вы должны предоставить ему права ПЕРСОНАЛА для данного администратора.
  • чтобы просмотреть список галереи, отредактировать каждый элемент и создать новый, вы должны предоставить ему права ОПЕРАТОРА для данного администратора.
  • чтобы сделать все остальное (т.е. удалить, изменить разрешения), установите MASTER разрешения для данного администратора

Попробуйте также расширить иерархию ROLE_ADMIN (в app/config/security.yml):

ROLE_ADMIN:             [ROLE_STAFF, ROLE_SONATA_EDITOR, ROLE_SONATA_ADMIN]

С уважением.

person Grzegorz Krauze    schedule 09.12.2014
comment
Я попытался обобщить свою проблему на картинке по ссылке. Я создал группу пользователей Agent и назначил ей пользователя с именем agent1. Я хочу, чтобы пользователь, назначенный в эту группу, мог добавлять, редактировать и удалять свои собственные элементы с помощью панели инструментов, но в настоящее время панель инструментов выглядит пустой. Проблема на картинке здесь: ссылка - person TheGooooogle; 09.12.2014
comment
Добавьте ROLE_ADMIN в группу агентов. - person Grzegorz Krauze; 10.12.2014
comment
Я имею в виду ROLE_SONATA_ADMIN, но она включена в ROLE_ADMIN. См. в SonataAdminbundle:standard_layout.html.twig - person Grzegorz Krauze; 10.12.2014
comment
Но извините, я не понял. Если вы видите на изображении, что ROLE_SONATA_ADMIN отмечен для группы агентов (а также для всех ролей персонала). Я прикрепляю другое изображение, которое показывает, что оно активно для группы агентов (пользовательский агент1 находится в группе пользователей агента) .Я могу войти в панель управления, но она пуста для агента 1, как показано на изображении в комментарии выше. ссылка - person TheGooooogle; 10.12.2014
comment
Так что это должно работать. Если вы не установили sonata:admin:setup-acl и не обновили объект, созданный вне администратора: sonata:admin:generate-object-acl. - person Grzegorz Krauze; 10.12.2014
comment
Спасибо за всю помощь. Я запустил php app/console sonata:admin:setup-acl и php app/console sonata:admin:generate-object-acl. Я попытался сделать это снова, но все еще не работает. На самом деле я обнаружил, что регистрация в качестве агента1, если я вручную обращаюсь к URL-адресу app_dev.php/admin/pro/propertycategory/create или edit, работает, но app_dev.php/admin/pro/propertycategory/list не работает и дает сообщение об ошибке 403, т.е. CUD работает, но R (список) не работает, а панель инструментов пуста. Все еще не решена. - person TheGooooogle; 10.12.2014
comment
Пожалуйста, запустите app/console sonata:admin:setup-acl --help и app/console sonata:admin:generate-object-acl --help, вы увидите, что эти методы имеют параметр --env, который по умолчанию установлен на dev. - person Grzegorz Krauze; 10.12.2014
comment
Да, я разрабатываю все в среде разработки [режим]. Я действительно не уверен, что делать сейчас. - person TheGooooogle; 10.12.2014