src/Controller/SecurityController.php line 33

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  4. use Symfony\Component\HttpFoundation\JsonResponse;
  5. use Symfony\Component\HttpFoundation\Response;
  6. use Symfony\Component\HttpFoundation\Request;
  7. use Symfony\Component\Routing\Annotation\Route;
  8. use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
  9. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  10. use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
  11. use App\Entity\Admin;
  12. use App\Repository\AdminRepository;
  13. use Symfony\Component\Mailer\MailerInterface;
  14. use Symfony\Component\Mime\Address;
  15. use Symfony\Component\Mime\Email;
  16. use App\Service\GlobalService;
  17. class SecurityController extends AbstractController
  18. {
  19.     private $adminRepository;
  20.     private $global_s;
  21.     public function __construct(AdminRepository $adminRepositoryGlobalService $global_s){
  22.         $this->adminRepository $adminRepository;
  23.         $this->global_s $global_s;
  24.     }
  25.     /**
  26.      * @Route("/login", name="security_login")
  27.      */
  28.     public function login(AuthenticationUtils $authenticationUtils): Response
  29.     {
  30.         // if ($this->getUser()) {
  31.         //     return $this->redirectToRoute('target_path');
  32.         // }
  33.         // get the login error if there is one
  34.         $error $authenticationUtils->getLastAuthenticationError();
  35.         // last username entered by the user
  36.         $lastUsername $authenticationUtils->getLastUsername();
  37.         return $this->render('security/login.html.twig', ['last_username' => $lastUsername'error' => $error]);
  38.     }
  39.     /**
  40.      * @Route("/logout", name="security_logout")
  41.      */
  42.     public function logout()
  43.     {
  44.         return $this->redirectToRoute('security_login');
  45.     }
  46.     /**
  47.      * @Route("/resetting/request", name="resetting_request", methods={"GET", "POST"})
  48.      */
  49.     public function resettingRequest(Request $requestMailerInterface $mailer){
  50.         $email "";
  51.         if ($request->isMethod('post')) {
  52.             $email $request->request->get("email");
  53.             $userExist $this->adminRepository->findOneBy(['email'=>$email]);
  54.             if(is_null($userExist)){
  55.                 $this->addFlash('error'"Aucun utilisateur n'existe avec cet email");
  56.                 return $this->render('security/resetting_request.html.twig', ['email' => $email]);
  57.             }
  58.             else{
  59.                 $entityManager $this->getDoctrine()->getManager();
  60.                 $entreprise $userExist->getEntreprise();
  61.                 $sender_email "gestion@fmda.fr";
  62.                 $sender_name "FMDA";
  63.                 if($entreprise){
  64.                     $sender_email = !is_null($entreprise->getSenderMail()) ? $entreprise->getSenderMail() : 'gestion@fmda.fr';
  65.                     $sender_name = !is_null($entreprise->getSenderName()) ? $entreprise->getSenderName() : $entreprise->getName();
  66.                 }
  67.                 $token $this->global_s->generateRandomString();
  68.                 $url $this->generateUrl('resetting_reset', ['token'=>$token], UrlGeneratorInterface::ABSOLUTE_URL);
  69.                 $message "Cliquer sur le lien suivant pour reinitialiser votre mot de passe ".$url;
  70.                 $userExist->setResetting($token);
  71.                 $entityManager->flush();
  72.                 $mail = (new Email())
  73.                 ->from(new Address($sender_email$sender_name))
  74.                 ->to($email)
  75.                 ->subject('Reset Password')
  76.                 ->html($message);
  77.                 $mailer->send($mail);
  78.                 $this->addFlash('info'"Un email a été à l'adresse ".$email.". Il contient un lien sur lequel  vous devez cliquer pour reinitialiser votre mot de passe");
  79.             }
  80.         }
  81.         return $this->render('security/resetting_request.html.twig', ['email' => $email]);
  82.     }
  83.     /**
  84.      * @Route("/resetting/reset/{token}", name="resetting_reset", methods={"GET", "POST"})
  85.      */
  86.     public function resettingReset(UserPasswordEncoderInterface $passwordEncoderRequest $request$token){
  87.         $userExist $this->adminRepository->findOneBy(['resetting'=>$token]);
  88.         if(is_null($userExist)){
  89.             $this->addFlash('error'"Le mot de passe a deja été reinitialisé avec ce token. Veuillez faire une nouvelle demande de reinitialisation de mot de passe");
  90.             return $this->render('security/resetting_reset.html.twig', []);
  91.         }
  92.                 
  93.         if ($request->isMethod('post')) {
  94.             $pass1 $request->request->get("pass1");
  95.             $pass2 $request->request->get("pass2");
  96.             if($pass1 != $pass2){
  97.                 $this->addFlash('error'"Les deux mots de passe doivent etre identique");
  98.                 return $this->render('security/resetting_reset.html.twig', []);
  99.             }
  100.             else{
  101.                 $userExist->setResetting(null);
  102.                 $password $passwordEncoder->encodePassword($userExist$pass1);
  103.                 $userExist->setPassword($password);
  104.                 $entityManager $this->getDoctrine()->getManager();
  105.                 $entityManager->flush();
  106.                 $this->addFlash('success'"Mot de passe reinitialisé avec success. Veuillez vous authentifier");
  107.                 return $this->redirectToRoute('security_login');
  108.                 
  109.             }
  110.         }
  111.         return $this->render('security/resetting_reset.html.twig', []);
  112.     }
  113. }