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())); }
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)); }
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(); }