2016-12-09 5 views
1

Я хочу установить роль для пользователя. Я использую ниже код:Fosuser bundle - задание роли пользователю

$user = this->getDoctrine()->getRepository('BlogBundle:User')->findOneById('11'); 
    $em = $this->getDoctrine()->getManager(); 
    $t=array('ROLE_ADMIN'); 
    $user->setRoles($t); 
    $em->persist($user); 
    $em->flush(); 
    return new Response('okk'); 

Когда я установил «ROLE_ADMIN» все в порядке, но когда я установил «ROLE_USER» ячейка база данных пуста. Зачем?

Благодарим вас за помощь.

+1

http://stackoverflow.com/questions/18779655/fosuserbundle-admin-area-not-accessible-after-login По умолчанию создается пользователь имеет роль ROLE_USER, который сохраняется в БД, как пустой массив преобразуется в JSON a: 0: {} Является ли значение столбца пустым значением или представлением пустого массива json? –

ответ

1

Столбец ролей в таблице пользователей, должны иметь

a:0:{} 

для пользователей только с ролью ROLE_USER

Программный способ проверки.

проверить, если пользователь имеет определенную роль (inclusing ROLE_USER)

if ($this->get('security.context')->isGranted('ROLE_USER')) { 
    // the user has the ROLE_USER role 
} 

есть также

$user->getRoles() 

Еще один способ проверить дважды, если использование действительно имеет ROLE_USER

php app/console fos:user:promote 

При появлении запроса введите имя пользователя, а затем ROLE_USER

он должен заявить, что

пользователя "[email protected]" было уже "ROLE_USER" роль.

0

В FOS User Bundle все пользователи имеют роль ROLE_USER. Было бы излишним добавить/сохранить эту роль.

Если вы ищете его в кодовой базе FOSUserBundle, роль будет псевдонимом как ROLE_DEFAULT в классе UserInterface.

+0

Спасибо всем за ответы – appson