我是Symfony2的新手,为了我公司的需要,我使用了Sonata Admin和用户捆绑软件。根据用户角色在仪表板上显示项目
我想知道是否可以根据记录用户的角色隐藏或显示仪表板上的项目。
例如,我有几个由Sonata AdminBundle(用户,公司,任务,网站等...管理)管理的实体,并且我想仅将用户管理显示给超级管理员,公司和站点管理到另一个角色(例如SITE_ADMIN)和第三个角色的任务。
你有没有遇到这种情况?你能否给我解决方案或线索直接进入解决方案?
非常感谢,
埃内斯
我是Symfony2的新手,为了我公司的需要,我使用了Sonata Admin和用户捆绑软件。根据用户角色在仪表板上显示项目
我想知道是否可以根据记录用户的角色隐藏或显示仪表板上的项目。
例如,我有几个由Sonata AdminBundle(用户,公司,任务,网站等...管理)管理的实体,并且我想仅将用户管理显示给超级管理员,公司和站点管理到另一个角色(例如SITE_ADMIN)和第三个角色的任务。
你有没有遇到这种情况?你能否给我解决方案或线索直接进入解决方案?
非常感谢,
埃内斯
使用Role handler,使用户相关权利只,例如,管理员组(创建)。然后将管理员用户分配给管理员组。索纳塔管理员将会选择限制,并且只会将仪表板项目显示给管理员。
此外,您可以隐藏,并在userboard这种方式显示块:
# 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如果用户没有正确的角色,该块应该会自动隐藏。
是的,你必须在你的配置中设置“sonata_admin:security:handler:sonata.admin.security.handler.role”。然后你就可以设置所需的角色来访问管理员的不同部分。 –
非常感谢您的回答,有点晚,但现在对我来说一切都很好:) – Enessari