如果用户键入XXX,Sonata Admin会限制操作

时间:2014-10-07 19:35:07

标签: symfony sonata-admin

我正在使用Sonata Admin进行项目,我遇到了问题。

我正在使用FosUserBundle,我有几种类型的用户,前管理员和主管。

我有两个实体User和Document。

帐户类型管理员可以管理文档和用户,但我希望主管只能管理文档。

我该怎么做?

当我与Superviser联系时,我不想选择创建编辑等...用户

谢谢!

1 个答案:

答案 0 :(得分:0)

Sonata Admin Docs - Security

看起来您的情况可以通过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使用它们来限制对功能的访问,例如显示哪些面板适合在主仪表板上,您自己可以测试它们以定制您自己的视图等