Skip to content

Instantly share code, notes, and snippets.

@donpadre
Forked from jmather/LoadUserData.php
Created March 31, 2018 09:47
Show Gist options
  • Save donpadre/6d1cb4506caf34aacbffa9feb5b586ac to your computer and use it in GitHub Desktop.
Save donpadre/6d1cb4506caf34aacbffa9feb5b586ac to your computer and use it in GitHub Desktop.
How to load users in a fixture
<?php
namespace Application\Sonata\UserBundle\DataFixtures\ORM;
use Doctrine\Common\DataFixtures\AbstractFixture;
use Doctrine\Common\DataFixtures\OrderedFixtureInterface;
use Doctrine\Common\Persistence\ObjectManager;
use Doctrine\Common\DataFixtures\FixtureInterface;
use Application\Sonata\UserBundle\Entity\User;
use Symfony\Component\DependencyInjection\ContainerAwareInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
class LoadUserData extends AbstractFixture implements OrderedFixtureInterface, ContainerAwareInterface
{
/**
* @var ContainerInterface
*/
private $container;
/**
* {@inheritDoc}
*/
public function setContainer(ContainerInterface $container = null)
{
$this->container = $container;
}
/**
* {@inheritDoc}
*/
public function load(ObjectManager $manager)
{
$test_password = 'test';
$factory = $this->container->get('security.encoder_factory');
/** @var $manager \FOS\UserBundle\Doctrine\UserManager */
$manager = $this->container->get('fos_user.user_manager');
/** @var $user \Application\Sonata\UserBundle\Entity\User */
$user = $manager->createUser();
$user->setUsername('superadmin');
$user->setEmail('[email protected]');
$user->setFirstname('Super');
$user->setLastname('Admin');
$user->setRoles(array('ROLE_SUPER_ADMIN'));
$user->setEnabled(true);
$encoder = $factory->getEncoder($user);
$password = $encoder->encodePassword($test_password, $user->getSalt());
$user->setPassword($password);
$manager->updateUser($user);
$this->addReference('user.super_admin', $user);
unset($user);
/** @var $user \Application\Sonata\UserBundle\Entity\User */
$user = $manager->createUser();
$user->setUsername('admin');
$user->setPlainPassword($test_password);
$user->setEmail('[email protected]');
$user->setFirstname('Regular');
$user->setLastname('Admin');
$user->setRoles(array('ROLE_ADMIN'));
$user->setEnabled(true);
$encoder = $factory->getEncoder($user);
$password = $encoder->encodePassword($user->getPlainPassword(), $user->getSalt());
$user->setPassword($password);
$manager->updateUser($user);
$this->addReference('user.admin', $user);
$faker = \Faker\Factory::create();
for ($i = 0; $i < 10; $i++)
{
/** @var $user \Application\Sonata\UserBundle\Entity\User */
$user = $manager->createUser();
$user->setUsername($faker->userName);
$user->setPlainPassword($test_password);
$user->setEmail($faker->safeEmail);
$user->setFirstname($faker->firstName);
$user->setLastname($faker->lastName);
$user->setRoles(array('ROLE_USER'));
$user->setEnabled(true);
$encoder = $factory->getEncoder($user);
$password = $encoder->encodePassword($user->getPlainPassword(), $user->getSalt());
$user->setPassword($password);
$manager->updateUser($user);
$this->addReference('user.demo_'.$i, $user);
}
}
/**
* Get the order of this fixture
*
* @return integer
*/
function getOrder()
{
return 1;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment