src/Controller/SecurityController.php line 66

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Constants\CentreServicesParametresConstants;
  4. use App\Entity\CentreServicesParametres;
  5. use App\Entity\OperateursCentres;
  6. use App\Manager\Mail\SendMailManager;
  7. use Symfony\Component\HttpFoundation\Request;
  8. use Symfony\Component\HttpFoundation\Response;
  9. use Symfony\Component\Routing\Annotation\Route;
  10. use App\Manager\Admincentre\Template\TemplateListManager;
  11. use App\Service\Metier\CentreServicesParametresSM;
  12. use Doctrine\Persistence\ManagerRegistry;
  13. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  14. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  15. use Symfony\Component\HttpFoundation\JsonResponse;
  16. use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
  17. use Symfony\Component\Security\Csrf\TokenGenerator\TokenGeneratorInterface;
  18. use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
  19. class SecurityController extends AbstractController
  20. {
  21.     private CentreServicesParametresSM $centreServicesParametresSM;
  22.     public function __construct(
  23.         CentreServicesParametresSM $centreServicesParametresSM
  24.     ){
  25.         $this->centreServicesParametresSM $centreServicesParametresSM;
  26.     }
  27.     
  28.     /**
  29.      * @Route("/", name="app_redirect_to_login")
  30.      */
  31.     public function redirectToLogin(AuthenticationUtils $authenticationUtils): Response
  32.     {
  33.         return $this->redirectToRoute('app_login');
  34.     }
  35.     /**
  36.      * @Route("/login", name="app_login")
  37.      */
  38.     public function login(AuthenticationUtils $authenticationUtils): Response
  39.     {
  40.         // if ($this->getUser()) {
  41.         //    $this->redirectToRoute('target_path');
  42.         // }
  43.         
  44.         $error $authenticationUtils->getLastAuthenticationError();
  45.         $lastUsername $authenticationUtils->getLastUsername();
  46.         return $this->render('security/login.html.twig', ['last_username' => $lastUsername'error' => $error]);
  47.     }
  48.     /**
  49.      * @Route("/logout", name="app_logout")
  50.      */
  51.     public function logout(UrlGeneratorInterface $urlGenerator)
  52.     {
  53.         throw new \Exception('This method can be blank - it will be intercepted by the logout key on your firewall');
  54.     }
  55.     /**
  56.      * @Route("/mot-de-passe-oublie", name="app_forgotten_password")
  57.      */
  58.     public function forgottenPassword(Request $requestTokenGeneratorInterface $tokenGeneratorManagerRegistry $doctrine): Response
  59.     {
  60.         if ($request->isMethod('POST')) {
  61.             $email $request->request->get('email');
  62.             $entityManager $doctrine->getManager();
  63.             $user $entityManager->getRepository(OperateursCentres::class)->findOneBy(['email' => $email]);
  64.             
  65.             if ($user === null || $user->getEtatArchivage()) {
  66.                 $this->addFlash('danger''Impossible de réinitisaliser votre mot de passe. Veuillez réessayer ou contacter l\'administrateur.');
  67.                 return $this->redirectToRoute('app_forgotten_password');
  68.             }
  69.             $token $tokenGenerator->generateToken();
  70.             $user->setResetToken($token);
  71.             $entityManager->flush();
  72.             $url $this->generateUrl('app_reset_password', array('token' => $token), UrlGeneratorInterface::ABSOLUTE_URL);
  73.             $template TemplateListManager::getTemplateByCodeAndIdCentre($entityManagerTemplateListManager::RESET_MDP_INCALL$user->getCentre()->getIdCentre());
  74.             $params['idTemplate'] = $template->getIdSendiblue();
  75.             $params['data'] = array(
  76.                 'token'=> $url
  77.             );
  78.             $apiKey $this->centreServicesParametresSM->getBrevoApiKey();
  79.             SendMailManager::sendinBlueEmailInCallWithParam($user->getEmail(), $apiKey$params);
  80.             return $this->render('security/mail-sent.html.twig');
  81.         }
  82.         return $this->render('security/forgotten_password.html.twig');
  83.     }
  84.     /**
  85.      * @Route("/reset_password/{token}", name="app_reset_password")
  86.      */
  87.     public function resetPassword(Request $requeststring $tokenUserPasswordHasherInterface $passwordHasherManagerRegistry $doctrine)
  88.     {
  89.         if ($request->isMethod('POST')) {
  90.             $entityManager $doctrine->getManager();
  91.             $user $entityManager->getRepository(OperateursCentres::class)->findOneBy(['resetToken' => $token]);
  92.             
  93.             if ($user === null) {
  94.                 $this->addFlash('danger''Token Inconnu');
  95.                 return $this->redirectToRoute('app_reset_password', ['token' => $token]);
  96.             }
  97.             $user->setResetToken(null);
  98.             $user->setPassword($passwordHasher->hashPassword($user$request->request->get('password')));
  99.             $entityManager->flush();
  100.             return $this->render('security/success_changed_password.html.twig', ['token' => $token]);
  101.         } else {
  102.             return $this->render('security/reset_password.html.twig', ['token' => $token]);
  103.         }
  104.     }
  105. }