Показывать группы панели в зависимости от роли (без групп acl)
Я пытаюсь показать несколько разделов на панели инструментов, в зависимости от роли пользователя, который вошел в систему.
Я не работаю с группами ACL или чем-то в этом роде. Я просто имею в моем security.yml:
role_hierarchy:
ROLE_COMPANY: ROLE_USER
ROLE_ADMIN: [ROLE_COMPANY, ROLE_USER]
ROLE_SUPER_ADMIN: [ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
Я могу войти и показать данные в виде списка (пример обзора заданий) в зависимости от роли пользователя, вошедшего в систему.
Теперь я хотел бы скрыть раздел на панели инструментов, когда зарегистрированный пользователь не является администратором.
В моем admin.yml у меня есть:
services:
sonata.admin.jobs:
class: MyBundleName\Admin\JobAdmin
tags:
- { name: sonata.admin, manager_type: orm, group: "Job Manager", label: "Jobs", roles: ROLE_ADMIN }
arguments:
- ~
- MyBundleName\Entity\Job
-
calls:
- [ setTranslationDomain, [MyBundleName]]
- [ setTemplate, [show, MyBundleName:Job:base_show.html.twig]]
sonata.admin.applications:
class: MyBundleName\Admin\ApplicationAdmin
tags:
- { name: sonata.admin, manager_type: orm, group: "Job Manager", label: "Applications" }
arguments:
- ~
- MyBundleName\Entity\Application
-
calls:
- [ setTranslationDomain, [MyBundleName]]
sonata.admin.categories:
class: MyBundleName\Admin\CategoryAdmin
tags:
- { name: sonata.admin, manager_type: orm, group: "Job Extra", label: "Categories" }
arguments:
- ~
- MyBundleName\Entity\Category
-
calls:
- [ setTranslationDomain, [MyBundleName]]
sonata.admin.skills:
class: MyBundleName\Admin\SkillAdmin
tags:
- { name: sonata.admin, manager_type: orm, group: "Job Extra", label: "Skills" }
arguments:
- ~
- MyBundleName\Entity\Skill
-
calls:
- [ setTranslationDomain, [MyBundleName]]
Как видите, у меня есть 2 группы "Job Manager" и "Job Extra". Я хотел бы скрыть группу "Дополнительные задания", если зарегистрированный пользователь не является администратором. Но какой самый простой способ сделать это?
1 ответ
Вы можете проверить свою роль пользователя непосредственно в своей ветке с помощью:
{% if is_granted('ROLE_USER') %}
<div>Only show this<div>
{% endif %}