Пример #1
0
 public function load(ObjectManager $manager)
 {
     $raw = file_get_contents('data/usuarios.json');
     $usuarios = json_decode($raw);
     foreach ($usuarios as $data) {
         $usuario = new Usuario();
         $usuario->setNombre($data->nombre);
         $usuario->setApellido($data->apellido);
         $usuario->setDni($data->dni);
         $usuario->setEmail($data->email);
         $usuario->setActivo($data->activo);
         $localidad = $this->getReference($data->localidad);
         /* @var $localidad Localidad */
         $usuario->setLocalidad($localidad);
         //  Datos obligatorios no relevantes
         $usuario->setCalle("Calle Falsa");
         $usuario->setCalleNumero(rand(0, 1500));
         $usuario->setCodigoPostal(rand(1500, 1900));
         $usuario->setNacionalidad("Argentino");
         $usuario->setFechaDeNacimiento(\DateTime::createFromFormat("d/m/Y", rand(1, 30) . "/" . rand(1, 12) . "/" . rand(1960, 1997)));
         $usuario->setSalt(md5(time()));
         $encoder = $this->container->get('security.encoder_factory')->getEncoder($usuario);
         $rawPassword = $data->password;
         $salt = $usuario->getSalt();
         $encodedPassword = $encoder->encodePassword($rawPassword, $salt);
         $usuario->setPassword($encodedPassword);
         $roles = array();
         foreach ($data->roles as $codigo) {
             $roles[] = $this->getReference($codigo);
         }
         $usuario->setPermisos(new ArrayCollection($roles));
         $manager->persist($usuario);
     }
     $manager->flush();
 }
Пример #2
0
 public function registroAction(Request $request)
 {
     $dni = $request->get('dni');
     if (!$dni || !is_numeric($dni)) {
         $this->addFlash(Mensajes::TYPE_WARNING, 'Debes ingresar un DNI válido');
         return $this->redirect($this->generateUrl('usuarios_registro_dni'));
     }
     $formType = new RegistroType();
     $usuario = new Usuario();
     $usuario->setDni($dni);
     $buscadorExterno = $this->get('brown.usuario_externo');
     $usuarioExterno = $buscadorExterno->findUsuario($dni);
     if ($usuarioExterno) {
         //  TODO: Completar los datos del usuario con los del usuario externo
     }
     $form = $this->createForm($formType, $usuario);
     if ($request->isMethod(Request::METHOD_POST)) {
         $form->submit($request);
         if ($form->isValid()) {
             $em = $this->get('doctrine.orm.default_entity_manager');
             $encoder = $this->get('security.encoder_factory')->getEncoder($usuario);
             $rawPassword = $usuario->getPassword();
             $encodedPassword = $encoder->encodePassword($rawPassword, $usuario->getSalt());
             $usuario->setPassword($encodedPassword);
             $roleRepo = $em->getRepository('UsuarioBundle:Role');
             $role = $roleRepo->findOneBy(array('codigo' => 'ROLE_USER'));
             $usuario->addRole($role);
             $usuario->setActivo(false);
             $em->persist($usuario);
             $em->flush();
             //  Guardar clave en el registro
             $clave = new Clave();
             $clave->setUsuario($usuario);
             $clave->setClave($encodedPassword);
             $em->persist($clave);
             $em->flush();
             //  Enviar e-mail de activación
             $encodedId = $this->getEncodedId($usuario);
             $twig = $this->get('twig');
             $url = "http://" . $request->getHttpHost() . $this->generateUrl('usuarios_confirmar_cuenta', array(self::PARAM_CODIGO => $encodedId));
             $html = $twig->render('@Usuario/email/confirmacion-email.html.twig', array('enlace' => $url));
             $asunto = 'Confirmación de cuenta en Portal Brown';
             $contentType = 'text/html';
             $charset = 'utf-8';
             $message = \Swift_Message::newInstance($asunto, $html, $contentType, $charset);
             $message->setTo($usuario->getEmail(), $usuario->__toString());
             $message->setFrom($this->container->getParameter('mailer_from'), $this->container->getParameter('mailer_from_name'));
             $mailer = $this->get('mailer');
             $mailer->send($message);
             $this->addFlash(Mensajes::TYPE_SUCCESS, "Su cuenta ha sido creada correctamente.");
             return $this->redirect($this->generateUrl('site_homepage'));
         }
     }
     return $this->render('@Usuario/Default/registro.html.twig', array('formulario' => $form->createView()));
 }