Sonata Admin Bundle授予自定义管理员角色的权限

时间:2014-02-20 12:59:43

标签: symfony sonata-admin

我正在使用"角色"安全处理程序,并希望创建一个新角色" ROLE_SONATA_ADMIN"并授予它所有权限,如:

ROLE_SONATA_ADMIN: [MASTER]

我可以授予我的用户所有权限的唯一方法是在security.yml中提供它:

ROLE_SONATA_ADMIN:
   - ROLE_SUPER_ADMIN

但我不想在我的角色中包含ROLE_SUPER_ADMIN,因为我可能希望将来添加一些限制

我尝试使用acl

handler: sonata.admin.security.handler.role

但得到:
Argument 2 passed to Sonata\AdminBundle\Security\Handler\AclSecurityHandler::__construct() must be an instance of Symfony\Component\Security\Acl\Model\MutableAclProviderInterface

角色处理程序对我来说已经足够了,我不需要acl

如何创建角色并为其授予权限?我已经阅读了文档,但仍然不理解

编辑:我现在明白了:对于我需要通过角色在security.yml中设置权限的每个实体,使用ROLE_SONATA_ADMIN_ [服务名称] _ [权限]
我的服务名称是:sonata.admin.widget
这里解决方案:

        ROLE_SONATA_WIDGET_ADMIN:
      - ROLE_SONATA_ADMIN_WIDGET_LIST
      - ROLE_SONATA_ADMIN_WIDGET_VIEW
      - ROLE_SONATA_ADMIN_WIDGET_CREATE
      - ROLE_SONATA_ADMIN_WIDGET_EDIT
      - ROLE_SONATA_ADMIN_WIDGET_DELETE
      - ROLE_SONATA_ADMIN_WIDGET_EXPORT

    ROLE_SONATA_ADMIN:
      - ROLE_SONATA_WIDGET_ADMIN

1 个答案:

答案 0 :(得分:3)

检查documentation中的第23.3点。您可以在 security.yml 中添加角色。如果您使用角色处理程序,它的工作原理如下。

security:
    ...
    role_hierarchy:
        # for convenience, I decided to gather Sonata roles here
        ROLE_SONATA_FOO_READER:
            - ROLE_SONATA_ADMIN_DEMO_FOO_LIST
            - ROLE_SONATA_ADMIN_DEMO_FOO_VIEW
        ROLE_SONATA_FOO_EDITOR:
            - ROLE_SONATA_ADMIN_DEMO_FOO_CREATE
            - ROLE_SONATA_ADMIN_DEMO_FOO_EDIT
        ROLE_SONATA_FOO_ADMIN:
            - ROLE_SONATA_ADMIN_DEMO_FOO_DELETE
            - ROLE_SONATA_ADMIN_DEMO_FOO_EXPORT
        # those are the roles I will use (less verbose)
        ROLE_STAFF:             [ROLE_USER, ROLE_SONATA_FOO_READER]
        ROLE_ADMIN:             [ROLE_STAFF, ROLE_SONATA_FOO_EDITOR, ROLE_SONATA_FOO_ADMIN]
        ROLE_SUPER_ADMIN:       [ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]