Symfony2 $user->setPassword() updates password as plain text [DataFixtures + FOSUserBundle] Symfony2 $user->setPassword() updates password as plain text [DataFixtures + FOSUserBundle] symfony symfony

Symfony2 $user->setPassword() updates password as plain text [DataFixtures + FOSUserBundle]


Since you are using FOSUserBundle, you can use UserManager to do this. I would use this code (assuming you have $this->container set):

public function load(ObjectManager $manager){    $userManager = $this->container->get('fos_user.user_manager');    $userAdmin = $userManager->createUser();    $userAdmin->setUsername('System');    $userAdmin->setEmail('system@example.com');    $userAdmin->setPlainPassword('test');    $userAdmin->setEnabled(true);    $userManager->updateUser($userAdmin, true);}


Call setPlainPassword instead.

<?phpnamespace Acme\SecurityBundle\DataFixtures\ORM;use Doctrine\Common\DataFixtures\FixtureInterface;use Symfony\Component\DependencyInjection\ContainerAwareInterface;use Symfony\Component\DependencyInjection\ContainerInterface;use Doctrine\Common\Persistence\ObjectManager;use Acme\SecurityBundle\Entity\User;class LoadUserData implements FixtureInterface, ContainerAwareInterface{    private $container;    public function setContainer(ContainerInterface $container = null)    {        $this->container = $container;    }    public function load(ObjectManager $manager)    {        $userAdmin = new User();        $userAdmin->setUsername('System');        $userAdmin->setEmail('system@example.com');                    $userAdmin->setPlainPassword('test');        $userAdmin->setRoles(array('ROLE_SUPER_ADMIN'));        $manager->persist($userAdmin);        $manager->flush();    }}


Four lines of code and you are done. It will handle everything for you:

        $userManager = $this->container->get('fos_user.user_manager');        $user->setPlainPassword($password);        $userManager->updatePassword($user);