src/Controller/SecurityController.php line 82

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  4. use Symfony\Component\HttpFoundation\Response;
  5. use Symfony\Component\Routing\Annotation\Route;
  6. use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
  7. use App\Form\ClientesResetPassType;
  8. use Symfony\Component\HttpFoundation\Request;
  9. use Doctrine\ORM\EntityManagerInterface;
  10. use App\Entity\Clientes;
  11. use App\Service\SendMailTemplate;
  12. class SecurityController extends AbstractController {
  13.     /**
  14.      * @Route("/admin/login", name="app_login_admin")
  15.      */
  16.     public function login2Admin(AuthenticationUtils $authenticationUtils): Response {
  17.         // if ($this->getUser()) {
  18.         //     return $this->redirectToRoute('target_path');
  19.         // }
  20.         // get the login error if there is one
  21.         $error $authenticationUtils->getLastAuthenticationError();
  22.         // last username entered by the user
  23.         $lastUsername $authenticationUtils->getLastUsername();
  24.         return $this->render('security/login.html.twig', ['last_username' => $lastUsername'error' => $error'login_tipo' => 'Administrador''restaurarPwd' => false]);
  25.     }
  26.     /**
  27.      * @Route("/admin/logout", name="app_logout_admin")
  28.      */
  29.     public function logoutAdmin(): void {
  30.         throw new \LogicException('This method can be blank - it will be intercepted by the logout key on your firewall.');
  31.     }
  32.     /**
  33.      * @Route("/clientes/login", name="app_login_clientes")
  34.      */
  35.     public function loginClientes(AuthenticationUtils $authenticationUtils): Response {
  36.         if ($this->getUser()) {
  37.             return $this->redirectToRoute('index_cliente');
  38.         }
  39.         // get the login error if there is one
  40.         $error $authenticationUtils->getLastAuthenticationError();
  41.         // last username entered by the user
  42.         $lastUsername $authenticationUtils->getLastUsername();
  43.         return $this->render('security/login.html.twig', ['last_username' => $lastUsername'error' => $error'login_tipo' => 'Clientes''restaurarPwd' => true]);
  44.     }
  45.     /**
  46.      * @Route("/clientes/logout", name="app_logout_clientes")
  47.      */
  48.     public function logoutClientes(): void {
  49.         throw new \LogicException('This method can be blank - it will be intercepted by the logout key on your firewall.');
  50.     }
  51.     /**
  52.      * @Route("/clientes/loginlink", name="app_login_clientes_link_check")
  53.      */
  54.     public function loginlinkClientes() {
  55.         throw new \LogicException('This code should never be reached');
  56.     }
  57.     public function generatePassword($length) {
  58.         $key "";
  59.         $pattern "1234567890abcdefghijklmnopqrstuvwxyz";
  60.         $max strlen($pattern) - 1;
  61.         for ($i 0$i $length$i++) {
  62.             $key .= substr($patternmt_rand(0$max), 1);
  63.         }
  64.         return $key;
  65.     }
  66.     /**
  67.      * @Route("/clientes/recuperarpwd", name="recuperar_pwd_cliente")
  68.      */
  69.     public function RecuperarPwdCliente(Request $requestEntityManagerInterface $entityManagerSendMailTemplate $smt): Response {
  70.         $cliente = new Clientes();
  71.         $form $this->createForm(ClientesResetPassType::class, $cliente);
  72.         $form->handleRequest($request);
  73.         $error NULL;
  74.         $valido false;
  75.         if ($form->isSubmitted() && $form->isValid()) {
  76.             $cliente_buscar $entityManager->getRepository(Clientes::class)->findOneBy(['clienteEmail' => $cliente->getClienteEmail()]);
  77.             if (!empty($cliente_buscar)) {
  78.                 $clienteTokenPass sha1(rand());
  79.                 $cliente_buscar->setClienteTokenPass($clienteTokenPass);
  80.                 $cliente_buscar->setClienteSolicitaPass(1);
  81.                 $entityManager->flush();
  82.                 $smt->envioRecuperarPass($cliente_buscar);
  83.                 $valido "Hemos enviado un email con un enlace para que puedas restaurar tu contraseña.";
  84.             } else {
  85.                 $error "No se ha encontrado ningún cliente con ese correo electrónico. <a href='https://amprogramacion.es/soporte' target='_blank'>Abrir un ticket de soporte.</a>";
  86.             }
  87.         }
  88.         return $this->renderForm('security/recuperarpwd.html.twig', [
  89.                     'form' => $form,
  90.                     'login_tipo' => 'cliente',
  91.                     'error' => $error,
  92.                     'valido' => $valido
  93.         ]);
  94.     }
  95.     /**
  96.      * @Route("/clientes/confirmarpwd/{token}", name="cliente_confirmar_pwd")
  97.      */
  98.     public function confirmarPwd($tokenEntityManagerInterface $entityManagerSendMailTemplate $smt) {
  99.         $cliente_buscar $entityManager->getRepository(Clientes::class)->findOneBy(['clienteTokenPass' => $token'clienteSolicitaPass' => '1']);
  100.         $error NULL;
  101.         $valido false;
  102.         if (!empty($cliente_buscar)) {
  103.             $nuevapass $this->generatePassword(8);
  104.             $cliente_buscar->setClientePass(password_hash($nuevapassPASSWORD_DEFAULT));
  105.             $cliente_buscar->setClienteTokenPass(NULL);
  106.             $cliente_buscar->setClienteSolicitaPass(NULL);
  107.             $entityManager->flush();
  108.              $smt->envioPassGenerada($cliente_buscar$nuevapass);
  109.             $valido "<strong>Hemos verificado tu solicitud de cambio de contraseña.</strong> La recibirás en tu correo electrónico en unos minutos.";
  110.         } else {
  111.             $error "No se puede recuperar la contraseña porque el cliente no la ha solicitado o el enlace es incorrecto.";
  112.         }
  113.         return $this->renderForm('security/recuperarpwd.html.twig', [
  114.                     'form' => NULL,
  115.                     'login_tipo' => 'cliente',
  116.                     'error' => $error,
  117.                     'valido' => $valido
  118.         ]);
  119.     }
  120. }