我正在尝试使用sonata admin bundle + fosuser + ACL
来实现这一点三级用户 - 普通用户----员工----超级管理员 当每个用户登录时,每个用户被重定向到管理仪表板,但只显示一些管理员项目(列表),而超级管理员以外的用户只允许编辑自己的项目
我实施了此处列出的所有内容 http://sonata-project.org/bundles/admin/2-3/doc/reference/security.html
我运行了所有acl命令(inits等)一切正常
但奏鸣曲管理员角色非常混乱。 我没有编辑每个用户的角色,而是将用户分配到组(创建3组普通组,员工组和超级管理员组)并为其分配角色(组)。
但我真的很困惑应该为员工和普通用户分配什么角色。 如果我分配了ROLE_SUPER_ADMIN角色,则用户可以执行所有操作。
如果我只将ROLE_SONATA_ADMIN分配给组,则仪表板为空而没有任何项目。
那么我怎样才能实现我的目标呢? 感谢。
答案 0 :(得分:1)
您应该分别为每个管理员设置权限。在你的图片上,我看不到管理包来管理权限,除了在你操作多对多关系时显示的关系包(GalleryHasMedia)。您只有ROLE_SONATA_MEDIA_ADMIN_GALLERY_HAS_MEDIA
为STAFF设置的权限。我可以想象你在仪表板或左侧边栏菜单上没有关系。
首先,每次添加任何管理员时都应该运行此命令(如果你没有这样做):
app/console sonata:admin:setup-acl
假设你有SonataMediaBundle,你应该跟随ROLE:
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:
还尝试扩展您的ROLE_ADMIN层次结构(在app / config / security.yml):
ROLE_ADMIN: [ROLE_STAFF, ROLE_SONATA_EDITOR, ROLE_SONATA_ADMIN]
问候。