src/Controller/Adherent/SecurityController.php line 21

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Adherent;
  3. use App\Entity\User;
  4. use App\Form\Adherent\RequestPasswordResetType;
  5. use App\Form\ResetPasswordType;
  6. use App\Form\Security\LoginType;
  7. use App\Service\ResetPasswordManager;
  8. use Doctrine\ORM\EntityManagerInterface;
  9. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  10. use Symfony\Component\Form\FormFactoryInterface;
  11. use Symfony\Component\HttpFoundation\Request;
  12. use Symfony\Component\HttpFoundation\Response;
  13. use Symfony\Component\Routing\Annotation\Route;
  14. use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
  15. class SecurityController extends AbstractController
  16. {
  17.     #[Route(path'/connexion'name'login')]
  18.     public function login(AuthenticationUtils $authenticationUtilsFormFactoryInterface $formFactory): Response
  19.     {
  20.         if ($this->getUser()) {
  21.             return $this->redirectToRoute('dashboard');
  22.         }
  23.         $error $authenticationUtils->getLastAuthenticationError();
  24.         $lastUsername $authenticationUtils->getLastUsername();
  25.         $data = ['email' => $lastUsername];
  26.         $form $formFactory->createNamed(''LoginType::class, $data);
  27.         return $this->render('security/login.html.twig', ['error' => $error'form' => $form->createView()]);
  28.     }
  29.     #[Route(path'/deconnexion'name'logout')]
  30.     public function logout(): void
  31.     {
  32.         throw new \LogicException(
  33.             'This method can be blank - it will be intercepted by the logout key on your firewall.'
  34.         );
  35.     }
  36.     #[Route(path'/reinitialisation-mot-de-passe'name'request_reset_password')]
  37.     public function requestPasswordReset(Request $requestEntityManagerInterface $emResetPasswordManager $resetPasswordManager): Response
  38.     {
  39.         $form $this->createForm(RequestPasswordResetType::class);
  40.         $form->handleRequest($request);
  41.         $email null;
  42.         if ($form->isSubmitted() && $form->isValid()) {
  43.             $email $form->get('email')->getData();
  44.             $user $em->getRepository(User::class)->findOneBy(['email' => $email]);
  45.             if ($user) {
  46.                 $resetPasswordManager->setResetToken($user);
  47.                 $em->flush();
  48.                 $resetPasswordManager->sendEmail($user);
  49.             }
  50.         }
  51.         return $this->render('security/request_password_reset.html.twig', [
  52.             'form'  => $form->createView(),
  53.             'email' => $email,
  54.         ]);
  55.     }
  56.     #[Route(path'/reinitialisation-mot-de-passe/{token}'name'reset_password')]
  57.     public function resetPassword(Request $request$tokenEntityManagerInterface $em): Response
  58.     {
  59.         $user $em->getRepository(User::class)->findOneBy(['resetToken' => $token]);
  60.         $done false;
  61.         if (null === $user) {
  62.             return $this->redirectToRoute('request_reset_password');
  63.         }
  64.         $form $this->createForm(ResetPasswordType::class, $user);
  65.         $form->handleRequest($request);
  66.         if ($form->isSubmitted() && $form->isValid()) {
  67.             $user->setResetToken(null);
  68.             $user->setIsTemporary(false);
  69.             $em->flush();
  70.             $done true;
  71.         }
  72.         return $this->render('security/reset_password.html.twig', ['form' => $form->createView(), 'done' => $done]);
  73.     }
  74. }