2012-05-28 2 views
0

Хотелось бы узнать, как можно добиться создания нового пользователя, но указав его роль. В настоящий момент, когда я создал нового пользователя, программа автоматически ассоциируется с ролью ROLE_ADMIN.FOSUserBundle - создание новой определяющей роли пользователя.

Любая информация/код/​​пример очень приветствуется.

Спасибо в продвижении.

+0

Вы уверены, что ** ROLE_ADMIN ** является роль по умолчанию? Мне это кажется странным. Как вы создаете пользователя? –

+0

Я предположил, что ROLE_ADMIN является ролью по умолчанию, но не уверен в этом. То, что я обычно делаю, чтобы создать нового пользователя, входит в '/ register' и заполняет форму. Затем проверьте аутентификацию на панели отладки Symfony и отобразите роль роли ROLE_ADMIN. –

ответ

6

Ok. Я решил свою проблему. В основном я следую руководству this и изменил некоторые аспекты.

  1. На моей модели я добавил поле ролей: protected $roles = array();
  2. изменил мою форму/Type/RegistrationFormType.php и поставить следующий контроль:

Код:

$user = new UserAdmin(); 
    $builder->add('roles', 'collection', array(
     'type' => 'choice', 
     'options' => array(
      'choices' => array(
       'nashville' => 'Nashville', 
       'paris'  => 'Paris', 
       'berlin' => 'Berlin', 
       'london' => 'London', 
      ), 
     ), 
)); 

Теперь, когда я открыл свой регистрационный просмотр, он показывает выпадающий список. В этом случае варианты: Нэшвилл, Париж, Берлин, Лондон.

+2

Entity Пользователь fosuserbundle уже имеет роли в поле –

+0

Почти идеальное решение – krachleur

4

Это код, который я использовал:

$admin = new User() ; 
    $admin->setEmail("[email protected]") ; 
    $admin->setUsername("mitke") ; 
    $admin->setPlainPassword("123123123") ; 
    $admin->setEnabled(true) ; 
    $admin->setSuperAdmin(true) ; 

    $user1 = new User() ; 
    $user1->setEmail("[email protected]") ; 
    $user1->setUsername("user1") ; 
    $user1->setPlainPassword("123123123") ; 
    $user1->setEnabled(true) ; 
    $user1->setRoles(array(User::ROLE_DEFAULT)) ; 

Может быть, это может помочь вам, это работает для меня.

Вопрос: У всех пользователей, которых вы создаете с помощью/register, есть роль администратора? Возможно, FOS решает, что первый зарегистрированный пользователь будет администратором по умолчанию.

+0

Я думал, что так было. Но вчера я попытался запустить весь реестр после очистки моей базы данных/кеша, а созданный пользователь был с ролью ROLE_USER. Я попробую с вашим кодом сегодня вечером. Большое спасибо. –

Смежные вопросы