0

好吧,我正在尝试使用 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 来分组仪表板是空的,没有任何项目。

那么我怎样才能实现我想要的呢?谢谢。

当前角色在这里 http://i59.tinypic.com/iwlkjt.jpg

4

1 回答 1

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:

  • 要查看图库列表,那么您应该在给定的管理员上授予他 GUEST 权限
  • 要查看图库列表,编辑自己的项目并创建新项目,那么您应该在给定的管理员上授予他 STAFF 权限
  • 要查看图库列表,编辑每个项目并创建新项目,那么您应该在给定的管理员上授予他 OPERATOR 权限
  • 做其他所有事情(即删除、更改权限)在给定的管理员上设置 MASTER 权限

还尝试扩展您的 ROLE_ADMIN 层次结构(在 app/config/security.yml):

ROLE_ADMIN:             [ROLE_STAFF, ROLE_SONATA_EDITOR, ROLE_SONATA_ADMIN]

问候。

于 2014-12-09T14:12:49.200 回答