Symfony Sonata管理包向自定义管理员角色授予权限
我正在使用“role”安全处理程序,希望创建一个新角色“role\u SONATA\u ADMIN”,并向其授予所有权限,如:Symfony Sonata管理包向自定义管理员角色授予权限,symfony,sonata-admin,Symfony,Sonata Admin,我正在使用“role”安全处理程序,希望创建一个新角色“role\u SONATA\u ADMIN”,并向其授予所有权限,如: ROLE_SONATA_ADMIN: [MASTER] 我授予用户所有权限的唯一方法是在security.yml: ROLE_SONATA_ADMIN: - ROLE_SUPER_ADMIN 但我不想在我的角色中包含角色超级管理员,因为我可能希望在将来添加一些限制 我尝试使用acl handler: sonata.admin.security.handler.
ROLE_SONATA_ADMIN: [MASTER]
我授予用户所有权限的唯一方法是在security.yml:
ROLE_SONATA_ADMIN:
- ROLE_SUPER_ADMIN
但我不想在我的角色中包含角色超级管理员,因为我可能希望在将来添加一些限制
我尝试使用acl
handler: sonata.admin.security.handler.role
但是得到:传递给Sonata\AdminBundle\Security\Handler\AclSecurityHandler::\uu construct()的参数2必须是Symfony\Component\Security\Acl\Model\MutableAclProviderInterface的实例
角色处理程序对我来说已经足够了,我不需要acl
如何创建角色并向其授予权限?我读了文档,但还是不明白
编辑:我现在明白了:对于每个实体,我都需要通过security.yml中的角色设置权限,角色为\u SONATA\u ADMIN\u[服务名称]\u[权限]我的服务名称是: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
检查表中的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]