src/Controller/ResettingController.php line 29

Open in your IDE?
  1. <?php
  2. // src/Controller/RegistrationController.php
  3. namespace App\Controller;
  4. use App\Entity\AppUser;
  5. use App\Form\RegistrationFormType;
  6. use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
  7. use Symfony\Component\HttpFoundation\Response;
  8. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  9. use Symfony\Component\Routing\Annotation\Route;
  10. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  11. use Symfony\Component\HttpFoundation\Request;
  12. use Symfony\Component\Mailer\MailerInterface;
  13. use Symfony\Bridge\Twig\Mime\TemplatedEmail;
  14. use Symfony\Component\Mime\Email;
  15. /**
  16.  * @Route("/{_locale}/resetting")
  17.  */
  18. class ResettingController extends AbstractController
  19. {
  20.     
  21.     /**
  22.      * @Route("/request", name="resetting.request")
  23.      * @return \Symfony\Component\HttpFoundation\Response
  24.     */
  25.     public function request(Request $requestMailerInterface $mailer)
  26.     {
  27.        
  28.         $em $this->getDoctrine()
  29.                     ->getManager();
  30.     
  31.         $error '';
  32.         $ok_soumission '';
  33.         if($request->getMethod() == 'POST'){
  34.             $emailAdress $request->request->get('email');
  35.             $user $em->getRepository(AppUser::class)
  36.                         ->findOneByEmail($emailAdress);
  37.             if($user == null){
  38.                 $error 'email non trouvé';
  39.             }else{
  40.                 $emailToken time();
  41.                 $user->setEmailToken($emailToken);
  42.                 $email = (new TemplatedEmail())
  43.                 ->from('harmony-noreply@assiecloudmail.com')
  44.                 ->to($emailAdress)
  45.                 ->subject('Réinitilaisez votre mot de passe')
  46.                 ->htmlTemplate('resetting/email_password_resetting.html.twig')
  47.                 ->context([
  48.                     'user' => $user,
  49.                     'emailToken' => $emailToken
  50.                 ]);
  51.                 $mailer->send($email); // Dispatches the message
  52.                 $em->flush();
  53.                 $ok_soumission 'Un lien de réinitialisation a été envoyé à l\'adresse '$emailAdress;
  54.             }
  55.                     
  56.         }
  57.         
  58.         return $this->render('resetting/request.html.twig', [ 
  59.             'error' => $error,
  60.             'ok_soumission' => $ok_soumission
  61.         ]);
  62.     }
  63.     /**
  64.      * @Route("/reset/{emailToken}", name="resetting_reset")
  65.      * @return \Symfony\Component\HttpFoundation\Response
  66.     */
  67.     public function reset(Request $requestUserPasswordHasherInterface $passwordHasherUserAuthenticatorInterface $userAuthenticatorLoginFormAuthenticator $authenticator$emailToken)
  68.     {
  69.        
  70.         $em $this->getDoctrine()
  71.                     ->getManager();
  72.     
  73.         $error '';
  74.         $ok_soumission '';
  75.         $user $em->getRepository(AppUser::class)
  76.                     ->findOneByEmailToken($emailToken);
  77.         if($user == null){
  78.             throw $this->createNotFoundException('Lien non valide');
  79.       
  80.         }
  81.         if($request->getMethod() == 'POST'){
  82.             $pass1 $request->request->get('pass1');
  83.             $pass2 $request->request->get('pass2');
  84.             if($pass1 != $pass2){
  85.                 $error 'Les deux mot de passe ne correspondent pas';
  86.             } else{
  87.             
  88.                 $user->setEmailToken('');
  89.                 $hashedPassword $passwordHasher->hashPassword($user$pass2);
  90.                 $user->setPassword($hashedPassword);
  91.                 $em->flush();
  92.                 
  93.                 return $this->redirectToRoute('resetting_resetted');
  94.             }
  95.                 
  96.         }
  97.         
  98.         return $this->render('resetting/reset.html.twig', [ 
  99.             'error' => $error,
  100.             'ok_soumission' => $ok_soumission
  101.         ]);
  102.     }
  103.     /**
  104.      * @Route("/resetted", name="resetting_resetted")
  105.      * @return \Symfony\Component\HttpFoundation\Response
  106.     */
  107.     public function resetted(Request $request)
  108.     {
  109.        
  110.         
  111.         return $this->render('resetting/resetted.html.twig', [ 
  112.             
  113.         ]);
  114.     }
  115.     
  116. }