src/Controller/ResettingController.php line 31

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