src/Controller/SecurityController.php line 26

  1. <?php
  2. namespace App\Controller;
  3. use App\Repository\UserRepository;
  4. use Doctrine\ORM\EntityManagerInterface;
  5. use App\Form\ResetPasswordRequestFormType;
  6. use Symfony\Bridge\Twig\Mime\TemplatedEmail;
  7. use Symfony\Component\HttpFoundation\Request;
  8. use Symfony\Component\Mailer\MailerInterface;
  9. use Symfony\Component\HttpFoundation\Response;
  10. use Symfony\Component\Routing\Annotation\Route;
  11. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  12. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  13. use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
  14. use Symfony\Component\Security\Csrf\TokenGenerator\TokenGeneratorInterface;
  15. class SecurityController extends AbstractController
  16. {
  17.     private $em
  18.     public function __construct(EntityManagerInterface $em)
  19.     {
  20.         return $this->em $em;
  21.     }
  22.     #[Route(path'/'name'login')]
  23.     public function login(AuthenticationUtils $authenticationUtils): Response
  24.     {
  25.         // if ($this->getUser()) {
  26.         //     return $this->redirectToRoute('target_path');
  27.         // }
  28.         // get the login error if there is one
  29.         $error $authenticationUtils->getLastAuthenticationError();
  30.         // last username entered by the user
  31.         $lastUsername $authenticationUtils->getLastUsername();
  32.         return $this->render('security/login.html.twig', ['last_username' => $lastUsername'error' => $error]);
  33.     }
  34.     #[Route(path'/logout'name'app_logout')]
  35.     public function logout(): void
  36.     {
  37.         throw new \LogicException('This method can be blank - it will be intercepted by the logout key on your firewall.');
  38.     }
  39.     #[Route('/forgotten_password'name:"forgotten_password")]
  40.     public function forgottenPassword(
  41.                                       Request $request,
  42.                                       UserRepository $userRepository,
  43.                                       TokenGeneratorInterface $tokenGeneratorInterface,
  44.                                       MailerInterface $mailer,
  45.                                      ): Response
  46.     {
  47.         $form $this->createForm(ResetPasswordRequestFormType::class);
  48.         $form->handleRequest($request);
  49.         if ($form->isSubmitted() && $form->isValid()) {
  50.             # code...
  51.             //Recuperration de l'email de l'utilisateur
  52.             $user $userRepository->findOneByEmail($form->get('email')->getData());
  53.             //Vérification de l'email 
  54.             if ($user) {
  55.                 # Géneration de Token 
  56.                 $token $tokenGeneratorInterface->generateToken();
  57.                 //on va persiter notre token dans la base de donnée
  58.                 $user->setResetToken($token);
  59.                 $this->em->persist($user);
  60.                 $this->em->flush();
  61.                 // On génère le lien de renitialisation de mot de passe
  62.             $url $this->generateUrl('send_reset_pasword_link',['token'=> $token], UrlGeneratorInterface::ABSOLUTE_URL);
  63.             $context compact('url','user');
  64.             //Envoie d'email
  65.             $email = (new TemplatedEmail())
  66.            ->from('no-reply@scicawally.com')
  67.            ->to($user->getEmail())
  68.            ->subject("Réinitialisation de mot de passe ")
  69.            ->htmlTemplate("email/resetPassWordLink.html.twig");
  70.            $mailer->send($email);
  71.                     
  72.               $this->addFlash('success'"Un lien de reinitialisation vous à été envoyer");
  73.          
  74.             }else{
  75.                 $this->addFlash('error'"l'e-mail entrer n'existe pas dans la base de donné ");
  76.             }
  77.             
  78.          
  79.         }
  80.         return $this->render('security/reset_password_request.html.twig',[
  81.             'Form'=>$form->createView()
  82.         ]);
  83.     }
  84. }