我使用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”]
答案 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