protected function execute(InputInterface $input, OutputInterface $output)
 {
     $em = $this->container->getDoctrine()->getManager($input->getOption('em'));
     $user = new User();
     $email = $input->getArgument('email');
     if ($em->getRepository('CmsAuthentication:User')->findOneByEmail($email) !== null) {
         throw new \Exception(sprintf('User with email [%s] already exists.', $email));
     }
     $user->setEmail($email);
     $user->setEmailConfirmed(true);
     $user->setActive(true);
     $user->setLogin($email);
     $user->setName($input->getArgument('name') ? $input->getArgument('name') : $user->getLogin());
     $user->setRoles(array('ROLE_USER'));
     if ($input->getArgument('group')) {
         $group = $em->getRepository('CmsAuthentication:Group')->findOneByName($input->getArgument('group'));
         if ($group) {
             $user->setGroup($group);
         } else {
             throw new \Exception(sprintf('Group [%s] does not exist.', $input->getArgument('group')));
         }
     }
     $encoded = $this->container['cms_authentication.encoder_factory']->getEncoder($user)->encodePassword($input->getArgument('password'), $user->getSalt());
     $user->setPassword($encoded);
     $em->persist($user);
     $em->flush();
     $output->writeln('User created!');
 }
 /**
  * Insert action
  */
 public function insertAction(Request $request)
 {
     $email = $request->request->filter('email', null, false, FILTER_VALIDATE_EMAIL);
     $existingUser = $this->container->getDoctrine()->getRepository('CmsAuthentication:User')->findOneByEmail($email);
     if (!empty($existingUser)) {
         throw new CmsException(null, 'User with this email is already registered!');
     }
     $name = $request->request->get('name');
     $dummyGroupId = $request->request->get('group');
     $groupName = $this->dummyGroupIdToGroupName($dummyGroupId);
     $group = $this->container->getDoctrine()->getRepository('CmsAuthentication:Group')->findOneByName($groupName);
     //		$this->checkActionPermission($group, Group::PERMISSION_MODIFY_USER_NAME);
     $user = new User();
     $user->setLogin($email);
     $user->setName($name);
     $user->setEmail($email);
     $user->setGroup($group);
     $password = substr(md5(rand() . time()), 0, 8);
     $user->setPassword($this->encodePassword($user, $password));
     $this->container->getDoctrine()->getManager()->flush();
     $message = \Swift_Message::newInstance('SiteSupra new user', sprintf('Hi %s, you are registered to SiteSupra at %s, your password is: %s', $user->getLogin(), $request->getSchemeAndHttpHost(), $password));
     $message->setTo($user->getEmail());
     $message->setFrom($this->container->getParameter('framework.swiftmailer.default_from'));
     $this->container->getMailer()->send($message);
     $this->container->getDoctrine()->getManager()->persist($user);
     $this->container->getDoctrine()->getManager()->flush();
     return new SupraJsonResponse(array('user_id' => $user->getId()));
 }