6

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

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

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

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

非常感谢,

埃内斯

4

2 回答 2

6

使用角色处理程序并仅启用用户相关权限,例如管理员组(创建它)。然后将管理员用户分配到管理员组。Sonata 管理员将接受限制,并且只会向管理员显示仪表板项目。

于 2013-07-08T12:46:21.447 回答
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: ~

文档中所述

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

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

于 2014-12-08T09:29:22.137 回答