Административный пакет Sonata: отображать боковое меню с учетом ролей

Я успешно настроил пакет администрирования сонаты с помощью редактора acl. Я легко могу установить мудрое разрешение пользователя на объект, а также роли пользователей с помощью редактора acl. но когда я пытаюсь войти в систему, используя определенную роль, я не вижу в боковом меню, которое я разрешил для определенной роли.

e.g

у меня есть такие роли, как ROLE_MASTER_ADMIN, ROLE_SUPER_ADMIN, ROLE_VENDOR, ROLE_RETAILER. на данный момент я установил два меню, используя USERBUNDLE, то есть пользователей и группу. который показан для двух ролей ROLE_MASTER_ADMIN, ROLE_SUPER_ADMIN с полным списком, правами редактирования, удаления, восстановления, оператора, мастера и владельца.

Затем я устанавливаю разрешения для ROLE_VENDOR, у которого есть доступ к списку пользователей, редактированию, удалению и восстановлению. так же, как я установил разрешение для ROLE_RETAILER, у которого есть доступ к списку групп, редактированию, удалению и восстановлению.

после входа в систему с пользователями ROLE_VENDOR, ROLE_RETAILER я ничего не вижу в боковом меню.

мне нужна помощь, чтобы реализовать это. заранее спасибо.

это то, что я установил в своем файле config.yml

sonata_admin: dashboard: groups: sonata_user: label: sonata_user label_catalogue: SonataUserBundle icon: '<i class="fa fa-users"></i>' items: - admin: sonata.user.admin.user route: admin_sonata_user_user_list label: users roles: ['ROLE_MASTER_ADMIN', 'ROLE_SUPER_ADMIN', 'ROLE_VENDOR'] - admin: sonata.user.admin.group route: admin_sonata_user_group_list label: groups roles: ['ROLE_MASTER_ADMIN', 'ROLE_SUPER_ADMIN', 'ROLE_RETAILER'] roles: ['ROLE_MASTER_ADMIN', 'ROLE_SUPER_ADMIN', 'ROLE_VENDOR', 'ROLE_RETAILER']

но он показывает мне ошибку, как показано ниже:

Во время рендеринга шаблона возникло исключение ("Предупреждение: get_class() ожидает, что параметр 1 будет объектом, заданной строкой").

ОБНОВЛЕНО Вывод команды

=> приложение/консоль php sonata:admin:generate-object-acl

Добро пожаловать в генератор ACL объектов AdminBundle

Эта команда помогает вам генерировать сущности ACL для объектов, обрабатываемых AdminBundle.

Если используется опция шага, вас спросят, хотите ли вы создать объекты ACL объекта для каждого администратора. Вы должны использовать сокращенную нотацию, такую ​​как AcmeDemoBundle:User, если вы хотите установить владельца объекта.

генерировать ACL для sonata.user.admin.user

[ВСЕГО] создано ACE класса для 4 объектов (добавлено 0, обновлено 4)

генерировать ACL для sonata.user.admin.group

[ВСЕГО] создано ACE класса для 0 объектов (добавлено 0, обновлено 0)

=> приложение/консоль php sonata:admin:setup-acl

Запуск конфигурации ACL AdminBundle

установить ACL для sonata.user.admin.user

обновить роль: ROLE_SONATA_USER_ADMIN_USER_ROLE_RETAILER, разрешения: ["LIST"]

обновить роль: ROLE_SONATA_USER_ADMIN_USER_ROLE_VENDOR, разрешения: ["LIST","EDIT","CREATE"]

обновить роль: ROLE_SONATA_USER_ADMIN_USER_ROLE_MASTER_ADMIN, разрешения: ["MASTER"]

установить ACL для sonata.user.admin.group

обновить роль: ROLE_SONATA_USER_ADMIN_GROUP_ROLE_RETAILER, разрешения: ["LIST"]

обновить роль: ROLE_SONATA_USER_ADMIN_GROUP_ROLE_VENDOR, разрешения: ["LIST","EDIT","CREATE"]

обновить роль: ROLE_SONATA_USER_ADMIN_GROUP_ROLE_MASTER_ADMIN, разрешения: ["MASTER"]


person zestard Dev    schedule 26.07.2017    source источник


Ответы (3)


Попробуйте настроить роли в конфигурации sonata-admin:

sonata_admin:
    dashboard:
        groups:
            users:
                label: ~
                roles: [ ROLE_VENDOR, ROLE_RETAILER]
person Michael Hirschler    schedule 26.07.2017
comment
не работает. меню администратора также невидимо из-за этого. - person zestard Dev; 27.07.2017

вам нужно запустить эти две команды

bin/console sonata:admin:generate-object-acl
bin/console sonata:admin:setup-acl

и для

parameters:

# ...
# Symfony 3 and above
security.acl.permission.map:
  class: Sonata\AdminBundle\Security\Acl\Permission\AdminPermissionMap

# optionally use a custom MaskBuilder
#sonata.admin.security.mask.builder:
#  class: Sonata\AdminBundle\Security\Acl\Permission\MaskBuilder


# Symfony < 3
#security.acl.permission.map.class: Sonata\AdminBundle\Security\Acl\Permission\AdminPermissionMap

дайте мне знать, если это работает для вас

  sonata_admin:
      title: Project Api Documentation
      title_logo: "images/logo_title.png"
      templates:
           layout: admin/layout.html.twig
      security:
      handler: sonata.admin.security.handler.acl

    # acl security information
      information:
           GUEST:    [VIEW, LIST]
           STAFF:    [EDIT, LIST, CREATE]
           EDITOR:   [OPERATOR, EXPORT]
           ADMIN:    [MASTER]

    # permissions not related to an object instance and also to be available when objects do not exist
    # the DELETE admin permission means the user is allowed to batch delete objects
        admin_permissions: [CREATE, LIST, DELETE, UNDELETE, EXPORT, OPERATOR, MASTER]

    # permission related to the objects
        object_permissions: [VIEW, EDIT, DELETE, UNDELETE, OPERATOR, MASTER, OWNER]
person M Maavia    schedule 15.08.2017
comment
не могли бы вы заменить в config.yml для тестирования - person M Maavia; 27.08.2017
comment
получил эту ошибку Не удалось найти шаблон admin/layout.html.twig (просмотрено в: D:\wamp\www\test_symfony_new\app/Resources/views, D:\wamp\www\test_symfony_new\vendor\symfony\symfony \src\Symfony\Bridge\Twig/Resources/views/Form, D:\wamp\www\test_symfony_new\vendor\knplabs\knp-menu\src\Knp\Menu/Resources/views). - person zestard Dev; 30.08.2017

Вам нужно добавить следующую конфигурацию в ваш services.yaml:

security.acl.permission.map:
  class: Sonata\AdminBundle\Security\Acl\Permission\AdminPermissionMap
person Nemov    schedule 30.05.2020