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);
        }

    }

Однако это не назначает роль моему недавно созданному пользователю. Я делаю что-то не так здесь?

Author: Dominykas55, 2015-07-10

2 answers

Проблема заключалась в конфигурации (config.yml), в которой не было включено значение true для подтверждения,

См.: https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/doc/configuration_reference.md{[5] } для получения дополнительной информации

 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