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

时间:2013-07-08 09:47:40

标签: php symfony sonata-admin symfony-sonata sonata-user-bundle

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

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

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

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

非常感谢,

埃内斯

2 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分: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 的上一个答案,则如果用户没有正确的角色,则应自动隐藏该块。