在sonata admin中,角色基于具有CRUD导出和主权限的管理服务名称,但考虑到sonata管理员帖子模块的示例,它看起来不太方便用户为其他用户创建组或为用户分配特定权限admin的服务命名为sonata.news.admin.post
,对于该服务,生成的角色看起来像
ROLE_SONATA_NEWS_ADMIN_POST_EDIT
ROLE_SONATA_NEWS_ADMIN_POST_LIST
ROLE_SONATA_NEWS_ADMIN_POST_CREATE
ROLE_SONATA_NEWS_ADMIN_POST_VIEW
ROLE_SONATA_NEWS_ADMIN_POST_DELETE
ROLE_SONATA_NEWS_ADMIN_POST_EXPORT
ROLE_SONATA_NEWS_ADMIN_POST_OPERATOR
ROLE_SONATA_NEWS_ADMIN_POST_MASTER
对于普通用户来说,难以阅读/分配角色是否有更好的方式来表示生成的角色?
答案 0 :(得分:3)
添加我自己的答案
在Sonata管理员中,如果您希望将显示安全角色更改为用户友好视图,则必须覆盖在奏鸣曲的服务下面
定义如下所示
<services>
<service id="sonata.user.editable_role_builder" class="Acme\DemoBundle\Security\EditableRolesBuilder">
<argument type="service" id="security.context" />
<argument type="service" id="sonata.admin.pool" />
<argument>%security.role_hierarchy.roles%</argument>
</service>
<service id="sonata.user.form.type.security_roles" class="Acme\DemoBundle\Form\Type\SecurityRolesType">
<tag name="form.type" alias="sonata_security_roles" />
<argument type="service" id="sonata.user.editable_role_builder" />
</service>
</services>
并在这些服务中定义您的类,我使用了Acme\DemoBundle
现在SecurityRolesType
类是Sonata的EditableRolesBuilder
的依赖者,你必须让它依赖于你自己的EditableRolesBuilder
类,所以以同样的方式覆盖奏鸣曲RestoreRolesTransformer
对你班级的依赖
我已将所有角色转换为SecurityRolesType.php
中的模块明智角色数组,并将其传递给您查看可在此文件中查看的所有自定义
还可以覆盖角色的树枝模板,您可以通过从form_admin_fields.html.twig
处理vendor\sonata-project\user-bundle\Resources\views
并添加app\Resources\SonataUserBundle\views\Form
路径覆盖父树枝文件来覆盖它,在twig文件中我试图使用accordion control bootstrap以明智的方式显示角色并具有适当的权限
注意:此代码仅显示权限 [创建,编辑,查看,列出,导出,删除,掌握]它将无法处理自定义 许可
最后一步在主配置文件config.yml
imports:
- { resource: parameters.yml }
- { resource: security.yml }
- { resource: @AcmeDemoBundle/Resources/config/admin.xml }
有关完整代码演示,您可以在下面的存储库中找到它
Sonata Admin Enhanced View For Security Roles