2016-10-24 6 views
1

Я хочу, чтобы ограничить некоторые маршруты от доступа всех ролей (SUPER_ADMIN, ADMIN включена) для (ROLE_CUSTOM)Symfony2 ограничить ROLE_SUPER_ADMIN

Где ROLE_CUSTOM обычая роль создана для заданного маршрута, за исключением.

Единственная роль, может получить доступ к этому маршруту (ROLE_CUSTOM)

Я хочу контролировать это от security.access_control.yml или от конфигурации брандмауэра.

Я знаю, что могу использовать функцию is_granted, но я хочу контролировать ее из security.access_control.yml или из конфигурации брандмауэра.

Как я могу это достичь?

ответ

2

Роли просты и в основном являются строками, которые вы придумываете и используете по мере необходимости, поэтому ROLE_SUPER_ADMIN и ROLE_ADMIN - это уже созданные вами персональные роли. Тогда все зависит от вашей роли иерархии (Reference):

security: 
    role_hierarchy: 
     ROLE_CUSTOM:  ROLE_USER 
     ROLE_ADMIN:  ROLE_USER 
     ROLE_SUPER_ADMIN: [ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH] 

Чтобы позволить защитить шаблоны URL для пользователей с ROLE_CUSTOM просто сделать следующее (Reference):

security: 
    access_control: 
     - { path: ^/exclusive-path$, role: ROLE_CUSTOM } 

Ready! только пользователи с ROLE_CUSTOM могут обращаться к /exclusive-path дорожкам.