Exemplo n.º 1
0
 /**
  * Muestra el formulario para que se registren los nuevos usuarios. Además
  * se encarga de procesar la información y de guardar la información en la base de datos
  */
 public function registroAction(Request $peticion)
 {
     $em = $this->getDoctrine()->getManager();
     $usuario = new Usuario();
     $usuario->setPermiteEmail(true);
     $formulario = $this->createForm(new UsuarioRegistroType(), $usuario);
     $formulario->handleRequest($peticion);
     if ($formulario->isValid()) {
         // Completar las propiedades que el usuario no rellena en el formulario
         $usuario->setSalt(md5(time()));
         $encoder = $this->get('security.encoder_factory')->getEncoder($usuario);
         $passwordCodificado = $encoder->encodePassword($usuario->getPassword(), $usuario->getSalt());
         $usuario->setPassword($passwordCodificado);
         // Guardar el nuevo usuario en la base de datos
         $em->persist($usuario);
         $em->flush();
         // Crear un mensaje flash para notificar al usuario que se ha registrado correctamente
         $this->get('session')->getFlashBag()->add('info', '¡Enhorabuena! Te has registrado correctamente');
         // Loguear al usuario automáticamente
         $token = new UsernamePasswordToken($usuario, null, 'frontend', $usuario->getRoles());
         $this->container->get('security.context')->setToken($token);
         return $this->redirect($this->generateUrl('_welcomeBase'));
     }
     return $this->render('UsuarioBundle:Default:registro.html.twig', array('formulario' => $formulario->createView()));
 }