Как обезопасить заданную администратором область c для указания роли c с помощью SonataAdmin - PullRequest
1 голос
/ 11 января 2020

У меня есть работающая установка SonataAdminBundle, это означает, что мой администратор хорошо защищен и не может быть доступен для простых пользователей.

- { path: ^/admin/, role: [ROLE_ADMIN, ROLE_SONATA_ADMIN] }

Я создал несколько административных разделов в бэк-офисе.

Но Я не хочу, чтобы все эти разделы были доступны для каждого администратора. Чтобы объяснить немного, мой сайт позволит создавать собственные сайты. Поэтому я не хочу, чтобы администратор веб-сайта имел доступ ко всей информации о веб-сайтах. Поэтому мне нужно ограничить некоторые части администратора только супер-администратором.

Для этого я попытался ограничить доступ к одному из разделов только супер-администратором

- { path: ^/admin/app/site/, role: [ROLE_SUPER_ADMIN]}

Вот моя иерархия ролей

role_hierarchy:
    ROLE_ADMIN:       [ROLE_USER, ROLE_SONATA_ADMIN]
    ROLE_SUPER_ADMIN: [ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
    SONATA:
        - ROLE_SONATA_PAGE_ADMIN_PAGE_EDI

Проблема в том, если я создаю нового пользователя с моей учетной записью супер-администратора и дам ему ROLE_ADMIN. Затем этот пользователь все еще может получить доступ к моему разделу admin/app/site/*, поэтому, очевидно, он не работает, и я не могу понять, почему.

РЕДАКТИРОВАТЬ: У меня есть чувства, что это не может быть сделано без использования ACL .. .но мне не очень нужен ACL ...

...