コード例 #1
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()));
 }
コード例 #2
0
 public function blanquearPasswordAction(Request $request)
 {
     $id = $request->get('id');
     $em = $this->get('doctrine.orm.entity_manager');
     $repo = $em->getRepository('UsuarioBundle:Usuario');
     $usuario = $repo->find($id);
     $this->getAdminBC()->addItem($usuario, $this->generateUrl('admin_usuarios_detalle', array('id' => $usuario->getId())))->addItem('Blanquear contraseña');
     $form = $this->createFormBuilder()->add('ok', 'checkbox', array('required' => true, 'label' => 'Estoy seguro de resetear la contraseña de este usuario'))->add('submit', 'submit', array('label' => 'Estoy seguro de regenerar la contraseña de este usuario', 'attr' => array('class' => 'btn-danger')))->getForm();
     if ($request->isMethod(Request::METHOD_POST)) {
         $form->submit($request);
         if ($form->isValid()) {
             $newRandomPassword = Usuario::generateRandomPassword();
             $usuario->setPassword($newRandomPassword);
             $this->encodeUserPassword($usuario);
             $em->persist($usuario);
             //  Guardar clave
             $clave = new Clave();
             $clave->setUsuario($usuario);
             $clave->setClave($usuario->getPassword());
             $em->persist($clave);
             $em->flush();
             //  Enviar email
             $asunto = 'Nueva contraseña';
             $body = $this->get('twig')->render('@Admin/emails/blanquear-password.html.twig', array('usuario' => $usuario, 'rawPassword' => $newRandomPassword));
             $msg = \Swift_Message::newInstance($asunto, $body, 'text/html', 'utf8');
             $msg->addFrom('*****@*****.**', 'Portal Brown');
             $msg->addTo($usuario->getEmail(), $usuario->__toString());
             $mail = $this->get('mailer');
             $mail->send($msg);
             //  Fin Enviar email
             $this->addFlash(Mensajes::TYPE_SUCCESS, 'La nueva contraseña ha sido enviada a ' . $usuario->getEmail());
             return $this->redirect($this->generateUrl('admin_usuarios_detalle', array('id' => $usuario->getId())));
         }
     }
     return $this->render('@Admin/Usuario/blanquear-password.html.twig', array('formulario' => $form->createView(), 'usuario' => $usuario));
 }
コード例 #3
0
ファイル: UsuarioFixture.php プロジェクト: pepesalcedo/SEIP
 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();
 }