Symfony2 FOS назначение ролей в контроллере
Я использую пакет FOS и SonataUserBundle в своем проекте. Когда Пользователь регистрируется в форме, он выбирает тип своей учетной записи. Является ли он покупателем, продавцом или и тем, и другим. В зависимости от выбранного варианта ему следует назначить другую роль.
Это поле формы:
->add('type', 'choice', array(
'label' => 'form.label.type',
'required' => true,
'choices' => array(
'buy' => 'Client',
'sell' => 'Provider',
'both' => 'Both'
)
))
Я переписал контроллер регистрации и в подтвержденном действии сделал следующее:
public function confirmedAction()
{
$user = $this->container->get('security.context')->getToken()->getUser();
$type = $user->container->getType();
$userManager = $this->container->get('fos_user.user_manager');
if($type == 'buy') {
$user->container->addRole('ROLE_USER');
$userManager->updateUser($user);
}
else if($type == 'sell') {
$user->container->addRole('ROLE_SONATA_PROVIDER');
$userManager->updateUser($user);
}
else {
$user->container->addRole('ROLE_SONATA_PROVIDER', 'ROLE_USER');
$userManager->updateUser($user);
}
}
Однако это не назначает роль моему недавно созданному пользователю. Я делаю что-то не так здесь?
2
Author: Dominykas55, 2015-07-10
2 answers
Проблема заключалась в конфигурации (config.yml), в которой не было включено значение true для подтверждения,
0
Author: iBlue, 2015-07-10 10:40:13
Я думаю, что addRole ищет массив, вы можете попробовать:
...
addRole(array('ROLE_USER'));
...
addRole(array('ROLE_SONATA_PROVIDER'));
...
addRole(array('ROLE_SONATA_PROVIDER', 'ROLE_USER'));
...
1
Author: iBlue, 2015-07-10 09:32:39