Назначение ролей в Symfony 2

Я пытаюсь назначить роль пользователю в моем контроллере. Например в базе данных я получил этот результат a:1:{i:0;s:11:"ROLE_DRIVER";}, но когда где-то в моем приложении я пытаюсь сделать это

if ($securityContext->isGranted('ROLE_DRIVER')) {

Я всегда ошибаюсь. В профилировщике я вижу, что у текущего пользователя есть ROLE_USER вместо _DRIVER,
Где моя проблема? Вот моя роль назначить:

$user->setRoles(array(1 => 'ROLE_DRIVER'));

Конфигурация пользователя:

# FOSUserBundle configuration
fos_user:
db_driver: orm # other valid values are 'mongodb', 'couchdb' and 'propel'
firewall_name: main
user_class: Vputi\UserBundle\Entity\User
registration:
form:
type: vputi_user_registration
profile:
form:
type: vputi_user_profile
change_password:
form:
type: vputi_user_change_password
name: vputi_user_change_password

Когда в ветке я делаю это:

{% if user.roles[0] == 'ROLE_DRIVER' %}

Все отлично работает, но в контроллере …

0

Решение

Я бы рекомендовал сделать это для назначения ROLE_DRIVER

$user->addRole('ROLE_DRIVER');

Или вы можете изменить способ придания ему значения:

$user->setRoles(array("ROLE_DRIVER"));
//update user

Обновления:

$user->addRole('ROLE_DRIVER');
$user->addRole('ROLE_OLD_DRIVER');

это то же самое, что установить эти две роли в одной строке:

$user->setRoles(array("ROLE_DRIVER", "ROLE_OLD_DRIVER"));

Проверка ветки:

{% if app.user.hasRole('ROLE_FOO') %}
...
{% endif %}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]