我是Symfony2的新手,为了公司的需要,我使用Sonata Admin和User捆绑包。
我想知道是否可以根据登录用户的角色在仪表板上隐藏或显示项目。
例如,我有几个实体由Sonata AdminBundle管理(用户、公司、任务、站点等…管理),我想只向超级管理员显示用户管理,向另一个角色显示公司和站点管理(例如site_Admin),向第三个角色显示任务。
你有没有遇到过这种情况?你能给我一个或多个直接找到解决方案的线索吗?
非常感谢,
Enes
使用角色处理程序并仅对Admins组(创建它)启用与用户相关的权限。然后将管理员用户分配到Admins组。Sonata管理员将接受限制,并且只向管理员显示仪表板项目。
此外,您可以通过以下方式在用户板中隐藏和显示块:
# 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.handlere.role,则如果用户没有正确的角色,则块应自动隐藏。