我正在使用Sonata Admin进行项目,我遇到了问题。
我正在使用FosUserBundle,我有几种类型的用户,前管理员和主管。
我有两个实体User和Document。
帐户类型管理员可以管理文档和用户,但我希望主管只能管理文档。
我该怎么做?
当我与Superviser联系时,我不想选择创建编辑等...用户
谢谢!
答案 0 :(得分:0)
看起来您的情况可以通过Roles处理:
使用SonataUserBundle将FOSUserBundle合并到Sonata Admin中(您可能已经这样做了)
在security.yml
中设置适当的角色。这些是标准的Symfony角色,但遵循特殊的Sonata Admin命名约定,例如: (改编自与您实体的文档):
应用程序/配置/ security.yml
security:
...
role_hierarchy:
#collect specific Sonata permissions together for convenience
ROLE_SONATA_USER:
- ROLE_SONATA_ADMIN_DEMO_USER_LIST
- ROLE_SONATA_ADMIN_DEMO_USER_VIEW
- ROLE_SONATA_ADMIN_DEMO_USER_CREATE
- ROLE_SONATA_ADMIN_DEMO_USER_EDIT
- ROLE_SONATA_ADMIN_DEMO_USER_DELETE
ROLE_SONATA_DOCUMENT:
- ROLE_SONATA_ADMIN_DEMO_DOCUMENT_LIST
- ROLE_SONATA_ADMIN_DEMO_DOCUMENT_VIEW
- ROLE_SONATA_ADMIN_DEMO_DOCUMENT_CREATE
- ROLE_SONATA_ADMIN_DEMO_DOCUMENT_EDIT
- ROLE_SONATA_ADMIN_DEMO_DOCUMENT_DELETE
#roles actually assigned to users
ROLE_SUPERVISER: [ROLE_USER, ROLE_SONATA_DOCUMENT]
ROLE_ADMIN: [ROLE_USER, ROLE_SONATA_DOCUMENT, ROLE_SONATA_USER]
将ROLE_SUPERVISER和ROLE_ADMIN分配给用户(通过FOSUserBundle命令或$ user-> addRole)
然后Sonata使用它们来限制对功能的访问,例如显示哪些面板适合在主仪表板上,您自己可以测试它们以定制您自己的视图等