Показывать группы панели в зависимости от роли (без групп 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 %}

Другие вопросы по тегам