根据用户角色在仪表板上显示项目

Posted

技术标签:

【中文标题】根据用户角色在仪表板上显示项目【英文标题】:Display items on dashboard according to user role 【发布时间】:2013-07-05 14:32:38 【问题描述】:

我是 Symfony2 的新手,为了我公司的需要,我正在使用 Sonata Admin 和 User 捆绑包。

我想知道是否可以根据登录用户的角色在仪表板上隐藏或显示项目。

例如,我有几个由 Sonata AdminBundle 管理的实体(用户、公司、任务、站点等......管理),我想仅向超级管理员、公司和站点管理显示用户管理以另一个角色(例如 SITE_ADMIN)和第三个角色的任务。

你有没有遇到过这种情况?你能给我解决方案或线索吗?

非常感谢,

埃内斯

【问题讨论】:

【参考方案1】:

使用Role handler 并仅启用用户相关权限,例如管理员组(创建它)。然后将管理员用户分配给管理员组。 Sonata Admin 将接受限制,并且只会向 Admins 显示仪表板项目。

【讨论】:

是的,你必须在你的配置中设置sonata_admin: security: handler: sonata.admin.security.handler.role。然后,您将能够设置所需的角色来访问 admin 的不同部分。 非常感谢您的回答,虽然有点晚了,但我现在一切都很好:)【参考方案2】:

此外,您还可以通过这种方式在用户面板中隐藏和显示块:

# app/config/config.yml
sonata_admin:
dashboard:
    groups:
        acme.admin.group.content:
            label: acme.admin.group.content
            label_catalogue: AcmeDemoBundle
            items:
                - sonata.admin.post
        acme.admin.group.blog:
            items: ~
            item_adds:
                - sonata.admin.page
            roles: [ ROLE_ONE, ROLE_TWO ]
        acme.admin.group.misc: ~

正如提到的in the docs。

请注意,这只会改变块的可见性,而不是可访问性。 如果没有限制,人们仍然可以在浏览器中打开知道的链接。

如果您使用实现 sonata.admin.security.handler.role 的上一个答案,如果用户没有正确的角色,则该块应自动隐藏。

【讨论】:

以上是关于根据用户角色在仪表板上显示项目的主要内容,如果未能解决你的问题,请参考以下文章

dashboard怎么用

Sonata Admin+ACL-不同角色的不同仪表板

从同一登录页面使用其用户角色将用户重定向到仪表板

处理访问仪表板与laravel和委托

如何在雪花中获取用户角色层次结构?

OBIEE:根据数据返回创建动态仪表板标题