2017-02-07 6 views
0

Я мои роли определяются следующим образом:Проблемы с ролями каскада в symfony3 и пользователе соната пачке

security: 
    role_hierarchy: 
    ROLE_PROFESSIONAL_SERVICES_MANAGER: [ROLE_USER, ROLE_SONATA_ADMIN, ROLE_BRANCH_ASSISTANT] 

Когда я пытаюсь проверить права доступа в моем контроллере, как показано ниже:

if($securityContext->isGranted('ROLE_PROFESSIONAL_SERVICES_MANAGER')) 

возвращения false, потому что в профилировщике разрешения, похоже, были сохранены, как показано ниже, поэтому:

"ROLE_PROFESSIONAL_SERVICES_MANAGER: ROLE_USER, ROLE_SONATA_ADMIN, ROLE_BRANCH_ASSISTANT" 

Кто-нибудь знает, как я могу это разрешить?

ответ

0

Роли предназначены для пользователей не для приложения.

С вашим кодом вы определяете, что с ролью ROLE_PROFFESSIONAL_SERVICES_MANAGER будут исполнены роли ROLE_USER, ROLE_SONATA_ADMIN и ROLE_BRANCH_ASSISTANT.

Но теперь вам нужно назначить эту роль пользователю и знак того, что пользователь в.

Когда вы звоните $securityContext->isGranted(), что он делает это получить маркер от вашего текущего авторизованы пользователя (которым вы можете увидеть в профилировщика) и проверьте роли этого пользователя из токена.

Таким образом, вы должны иметь пользователь с соответствующей ролью, отведенной подписанной в

Если ваш уже использует SonatAUserBundle или FOSUserBundle использовать эту команду, чтобы создать пользователь легко:. bin/console fos:user:create

Затем назначьте ему соответствующие роли :

app/console fos:user:promote nameOfYourUser ROLE_PROFFESSIONAL_SERVICES_MANAGER

Если ваше приложение не имеет системы управления пользователями здесь смотрите: https://sonata-project.org/bundles/admin/master/doc/reference/security.html#user-management

+0

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

+0

Sonata Пользователь не имеет стабильной версии для Symfony 3. Может быть, поэтому он работал, а не больше. Попробуйте перейти на Symfony 2.8 – Mawcel