【问题标题】:Sonata admin bundle: display role wise sidebar menuSonata 管理包:显示角色明智的侧边栏菜单
【发布时间】:2018-01-01 19:38:55
【问题描述】:

我使用 acl 编辑器成功设置了奏鸣曲管理包。我可以使用 acl 编辑器轻松设置对象以及角色用户的用户明智权限。但是当我尝试使用特定角色登录时,我看不到我允许特定角色的侧边栏菜单。

例如

我有 ROLE_MASTER_ADMIN、ROLE_SUPER_ADMIN、ROLE_VENDOR、ROLE_RETAILER 等角色。我现在使用 USERBUNDLE 设置了两个菜单,即用户和组。这显示了两个角色 ROLE_MASTER_ADMIN、ROLE_SUPER_ADMIN,具有完整的列表、编辑、删除、取消删除、操作员、主人和所有者权限。

然后我为 ROLE_VENDOR 设置权限,该权限可以访问 用户 列表、编辑、删除和取消删除。就像我为 ROLE_RETAILER 设置权限一样,它可以访问 groups 列表、编辑、删除和取消删除。

使用 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 app/console sonata:admin:generate-object-acl

欢迎使用 AdminBundle 对象 ACL 生成器

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

如果使用 step 选项,系统会询问您是否要为每个 Admin 生成对象 ACL 实体。 如果要设置对象所有者,则必须使用 AcmeDemoBundle:User 之类的快捷方式。

为 sonata.user.admin.user 生成 ACL

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

为 sonata.user.admin.group 生成 ACL

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

=> 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"]

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 不工作。管理菜单也因此不可见。
    【解决方案2】:

    你需要运行这两个命令

    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]
    

    【讨论】:

    • 能否请您替换 config.yml 进行测试
    • 收到此错误 无法找到模板“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/视图).
    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 2021-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多