src/Controller/SecurityController.php line 22

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 Symfony\Component\HttpFoundation\RedirectResponse;
  8. use Symfony\Component\HttpFoundation\Session\Flash\FlashBagInterface;
  9. use App\Repository\UserRepository;
  10. use App\Entity\User;
  11. use Symfony\Component\Mailer\MailerInterface;
  12. use Doctrine\ORM\EntityManagerInterface;
  13. use Symfony\Component\HttpFoundation\JsonResponse;
  14. use Symfony\Component\Mime\Email;
  15. class SecurityController extends AbstractController
  16. {
  17.     #[Route(path'/login'name'app_login')]
  18.     public function login(AuthenticationUtils $authenticationUtils): Response
  19.     {
  20.         // if ($this->getUser()) {
  21.         //     return $this->redirectToRoute('target_path');
  22.         // }
  23.         // get the login error if there is one
  24.         $error $authenticationUtils->getLastAuthenticationError();
  25.         // last username entered by the user
  26.         $lastUsername $authenticationUtils->getLastUsername();
  27.         $errorMessage $error $error->getMessage() : null;
  28.         // Personnaliser le message d'erreur
  29.         $errorMessage_verif '';
  30.         
  31.                return $this->render('security/login.html.twig'
  32.                ['last_username' => $lastUsername'error' => $error,
  33.                'errorMessage'  => $errorMessage,'errorMessage_verif'  => $errorMessage_verif  ]);
  34.     }
  35.     #[Route(path'/login'name'app_login_admin')]
  36.     public function loginAdmin(AuthenticationUtils $authenticationUtils): Response
  37.     {
  38.         // if ($this->getUser()) {
  39.         //     return $this->redirectToRoute('target_path');
  40.         // }
  41.         // get the login error if there is one
  42.         $error $authenticationUtils->getLastAuthenticationError();
  43.         // last username entered by the user
  44.         $lastUsername $authenticationUtils->getLastUsername();
  45.         $errorMessage $error $error->getMessage() : null;
  46.         // Personnaliser le message d'erreur
  47.         $errorMessage_verif '';
  48.         
  49.                return $this->render('security/login_admin.html.twig', ['last_username' => $lastUsername
  50.                'error' => $error,
  51.                'errorMessage'  => $errorMessage,'errorMessage_verif'  => $errorMessage_verif  ]);
  52.     }
  53.     #[Route(path'/logout'name'app_logout')]
  54.     public function logout(): void
  55.     {
  56.         throw new \LogicException('This method can be blank - it will be intercepted by the logout key on your firewall.');
  57.     }
  58.     #[Route('/access-denied'name'access_denied')]
  59.     public function accessDenied(): Response
  60.     {
  61.         return $this->render('security/access_denied.html.twig');
  62.     }
  63.     #[Route('/resend-verification'name'app_resend_verification')]
  64.     public function resendVerificationEmail(
  65.         UserRepository $userRepository
  66.         MailerInterface $mailer
  67.         EntityManagerInterface $entityManager,
  68.         AuthenticationUtils $authenticationUtils
  69.     ) {
  70.         $lastUsername $authenticationUtils->getLastUsername();
  71.         //$user = $this->getUser();
  72.         $user $userRepository->findOneBy(['email' => $lastUsername]);
  73.         /*
  74.         if (!$user instanceof UserInterface) {
  75.             return new JsonResponse(['message' => 'Utilisateur non connecté.'], 401);
  76.         }
  77.         */
  78.         if ($user->isIsVerified()) {
  79.             $errorMessage_verif 'Votre compte est déjà vérifié.';
  80.             $errorMessage='';
  81.             return $this->render('security/login.html.twig', ['last_username' => $lastUsername,'errorMessage_verif'  => $errorMessage_verif ,'errorMessage'  => $errorMessage ]);
  82.             //return new JsonResponse(['message' => 'Votre compte est déjà vérifié.'], 400);
  83.         }
  84.        
  85. //dd($lastUsername);
  86.         // Générer un nouveau token de vérification
  87.         $verificationToken bin2hex(random_bytes(32));
  88.         $user->setConfirmationToken($verificationToken);
  89.         $entityManager->flush();
  90.         // Envoyer un nouvel email de confirmation
  91.         $email = (new Email())
  92.             ->from('yobale@cassaconsulting.com')
  93.             ->to($lastUsername)
  94.             ->subject('Confirmez votre adresse email')
  95.             ->html("Bonjour<br/>Pour vérifier votre Email,<br/><p>Cliquez sur ce lien :</p>
  96.                     <a href='https://yobaale.com/verify/$verificationToken'>Confirmer mon email</a><br/>Cdt,<br/>Yôbaale");
  97.         $mailer->send($email);
  98.         $errorMessage_verif 'Email de vérification envoyé.';
  99.         $errorMessage='';
  100.         return $this->render('security/login.html.twig', ['last_username' => $lastUsername,'errorMessage_verif'  => $errorMessage_verif ,'errorMessage'  => $errorMessage ]);
  101.        // return new JsonResponse(['message' => 'Email de vérification envoyé.']);
  102.     }
  103.     #[Route('/verify/{token}'name'app_verify_email')]
  104. public function verifyEmail(string $tokenUserRepository $userRepositoryEntityManagerInterface $entityManager,AuthenticationUtils $authenticationUtils)
  105. {
  106.     $user $userRepository->findOneBy(['confirmationToken' => $token]);
  107.     $lastUsername $authenticationUtils->getLastUsername();
  108.     if (!$user) {
  109.        // return new JsonResponse(['message' => 'Token invalide ou expiré.'], 400);
  110.      
  111.        return $this->redirectToRoute('app_login');
  112.     }
  113.     $user->setConfirmationToken(null);
  114.     $user->setIsVerified(true);
  115.     $entityManager->flush();
  116.    // return new JsonResponse(['message' => 'Votre email a été vérifié avec succès.']);
  117.     $errorMessage_verif 'Votre email a été vérifié avec succès.';
  118.     $errorMessage='';
  119.     return $this->render('security/login.html.twig', ['last_username' => $lastUsername,'errorMessage_verif'  => $errorMessage_verif ,'errorMessage'  => $errorMessage ]);
  120. }
  121. }