sonata admin bundle:显示角色明智的侧边栏菜单

时间:2017-07-26 12:55:49

标签: symfony sonata-admin symfony-sonata sonata sonata-user-bundle

我使用acl编辑器成功设置了sonata admin bundle。我可以轻松地为对象以及使用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为对象,给定字符串”)。

已更新 命令输出

=&GT; php app / console sonata:admin:generate-object-acl

欢迎使用AdminBundle对象ACL生成器

此命令可帮助您为AdminBundle处理的对象生成ACL实体。

如果使用步骤选项,系统将询问您是否要为每个管理员生成对象ACL实体。 如果要设置对象所有者,则必须使用AcmeDemoBundle:User等快捷符号。

  

为sonata.user.admin.user

生成ACL      

[TOTAL]为4个对象生成了类ACE(添加0,更新4)

     

为sonata.user.admin.group生成ACL

     

[TOTAL]为0个对象生成了类ACE(添加0,更新为0)

=&GT; php app / console sonata:admin:setup-acl

启动ACL AdminBundle配置

  

为sonata.user.admin.user

安装ACL      

更新角色: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”]

     

为sonata.user.admin.group安装ACL

     

更新角色: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”]

3 个答案:

答案 0 :(得分:1)

尝试在sonata-admin配置中配置角色:

sonata_admin:
    dashboard:
        groups:
            users:
                label: ~
                roles: [ ROLE_VENDOR, ROLE_RETAILER]

答案 1 :(得分:0)

你需要运行这两个命令

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]

答案 2 :(得分:0)

您需要将下一个配置添加到您的services.yaml:

security.acl.permission.map:
  class: Sonata\AdminBundle\Security\Acl\Permission\AdminPermissionMap