【问题标题】:Sonata Admin+ACL-Different dashboard for different rolesSonata Admin+ACL-不同角色的不同仪表板
【发布时间】:2015-02-06 00:40:21
【问题描述】:

我正在尝试使用 Sonata admin bundle+ fosuser+ ACL 来实现这一目标

三级用户--普通用户----员工----超级管理员 当每个用户登录时,每个用户都会被重定向到管理仪表板,但只显示一些管理项目(列表),并且超级管理员以外的用户只允许编辑自己的项目

我实现了此处列出的所有内容 http://sonata-project.org/bundles/admin/2-3/doc/reference/security.html

我运行了所有 acl 命令(init 等),一切正常

但是奏鸣曲管理员角色是如此令人困惑。 我不是编辑每个用户的角色,而是将用户分配给组(创建 3 个普通组、员工组和超级管理员组)并将角色分配给它(组)。

但是我真的很困惑应该为员工和普通用户分配什么角色。 如果我分配了 ROLE_SUPER_ADMIN 角色,用户就可以做任何事情。

如果我只分配 ROLE_SONATA_ADMIN 来分组仪表板是空的,没有任何项目。

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

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

【问题讨论】:

    标签: fosuserbundle sonata-admin sonata


    【解决方案1】:

    您应该分别为每个管理员设置权限。在您的图片上,我看不到管理权限的管理包,除了关系包(GalleryHasMedia),当您对多对多关系进行操作时会显示该包。您只有为 STAFF 设置的 ROLE_SONATA_MEDIA_ADMIN_GALLERY_HAS_MEDIA 的权限。我可以想象您在仪表板或左侧边栏菜单上没有此关系的块。

    首先,您应该在每次添加任何管理员时运行此命令(以防万一):

    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]
    

    问候。

    【讨论】:

    • 我试图在链接中的图片中总结我的问题。我创建了一个用户组“Agent”并为其分配了一个名为“agent1”的用户。我希望分配给该组的用户能够使用仪表板添加、编辑、删除他们自己的项目,但当前仪表板显示为空。此处图片中的问题:link
    • 将 ROLE_ADMIN 添加到代理组。
    • 我的意思是 ROLE_SONATA_ADMIN 但它包含在 ROLE_ADMIN 中。请参阅 SonataAdminbundle:standard_layout.html.twig
    • 但抱歉我没听明白。如果您在图片中看到 ROLE_SONATA_ADMIN 已检查代理组(以及所有员工角色)。我附上了另一张显示代理组处于活动状态的图像(用户agent1在agent用户组中)。我可以登录仪表板,但agent1为空,如上面评论中的图片所示。 link
    • 所以它应该可以工作。除非你没有设置 sonata:admin:setup-acl 并更新在 Admin 之外创建的对象:sonata:admin:generate-object-acl。
    猜你喜欢
    • 2014-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-31
    • 2013-12-19
    • 1970-01-01
    • 2018-05-07
    • 2015-09-20
    相关资源
    最近更新 更多