/** * 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())); }
public function load(ObjectManager $manager) { // Obtener todas las ciudades de la base de datos $ciudades = $manager->getRepository('CiudadBundle:Ciudad')->findAll(); for ($i = 1; $i <= 200; $i++) { $usuario = new Usuario(); $usuario->setNombre($this->getNombre()); $usuario->setApellidos($this->getApellidos()); $usuario->setEmail('usuario' . $i . '@localhost'); $usuario->setSalt(base_convert(sha1(uniqid(mt_rand(), true)), 16, 36)); $passwordEnClaro = 'usuario' . $i; $encoder = $this->container->get('security.encoder_factory')->getEncoder($usuario); $passwordCodificado = $encoder->encodePassword($passwordEnClaro, $usuario->getSalt()); $usuario->setPassword($passwordCodificado); $ciudad = $ciudades[array_rand($ciudades)]; $usuario->setDireccion($this->getDireccion($ciudad)); $usuario->setCiudad($ciudad); // El 60% de los usuarios permite email $usuario->setPermiteEmail(rand(1, 1000) % 10 < 6); $usuario->setFechaAlta(new \DateTime('now - ' . rand(1, 150) . ' days')); $usuario->setFechaNacimiento(new \DateTime('now - ' . rand(7000, 20000) . ' days')); $dni = substr(rand(), 0, 8); $usuario->setDni($dni . substr("TRWAGMYFPDXBNJZSQVHLCKE", strtr($dni, "XYZ", "012") % 23, 1)); $usuario->setNumeroTarjeta('1234567890123456'); $manager->persist($usuario); } $manager->flush(); }