public function editAction(Request $request, User $user) { $principalidentity = $user->getIdentityPrincipal(); $data = array('displayname' => $principalidentity->getDisplayname(), 'email' => $principalidentity->getEmail(), 'roles' => $user->getRoles()); $form = $this->get('form.factory')->create(new FormType\User\EditUserType()); $form->setData($data); $form->handleRequest($request); if ($form->isValid()) { $data = $form->getData(); $em = $this->getDoctrine()->getManager(); # Persisting identity principal $principalidentity->setDisplayname($data['displayname']); $principalidentity->setEmail($data['email']); $em->persist($principalidentity); # Persisting user if password changed if (!is_null($data['password'])) { $password = $data['password']; $user->setPassword($this->get('security.encoder_factory')->getEncoder($user)->encodePassword($password, $user->getSalt())); } # Persisting user roles $user->setRoles($data['roles']); $em->persist($user); $em->flush(); $this->get('session')->getFlashBag()->add('notice', 'User <i class="fa fa-user"></i> <strong>' . htmlspecialchars($user->getUsername()) . '</strong> has been updated.'); return $this->redirect($this->generateUrl('baikal_admin_user_list')); } return $this->render('BaikalAdminBundle:User:form.html.twig', array('user' => $user, 'form' => $form->createView())); }
public function createAndPersistUser($username, $password) { # Persisting identity principal $principalidentity = new UserPrincipal(); $principalidentity->setDisplayname(ucwords($username)); $principalidentity->setUri('principals/' . $username); $principalidentity->setEmail('*****@*****.**'); $this->entityManager->persist($principalidentity); # Persisting user $user = new User(); $user->setUsername($username); # Not setting salt; handled by the user entity $user->setPassword($this->passwordencoder->encodePassword($password, $user->getSalt())); $user->addRole('ROLE_ADMIN'); $user->addRole('ROLE_FRONTEND_USER'); $this->entityManager->persist($user); $this->entityManager->flush(); return $user; }