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 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. use Symfony\Component\Security\Http\Authentication\UserAuthenticatorInterface;
  16. use App\Security\LoginFormAuthenticator;
  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.         return $this->redirectToRoute('security_login');
  31.         $em $this->getDoctrine()
  32.                     ->getManager();
  33.     
  34.         $error '';
  35.         $ok_soumission '';
  36.         if($request->getMethod() == 'POST'){
  37.             $emailAdress $request->request->get('email');
  38.             $user $em->getRepository(AppUser::class)
  39.                         ->findOneByEmail($emailAdress);
  40.             if($user !== null){
  41.                 $emailToken time();
  42.                 $user->setEmailToken($emailToken);
  43.                 $email = (new TemplatedEmail())
  44.                 ->from('harmony-noreply@assiecloudmail.com')
  45.                 ->to($emailAdress)
  46.                 ->subject('Réinitilaisez votre mot de passe')
  47.                 ->htmlTemplate('resetting/email_password_resetting.html.twig')
  48.                 ->context([
  49.                     'user' => $user,
  50.                     'emailToken' => $emailToken
  51.                 ]);
  52.                 $mailer->send($email); // Dispatches the message
  53.                 $em->flush();
  54.             }
  55.             $ok_soumission 'Si un compte est associé à cette adress, Un lien de réinitialisation a été envoyé à l\'adresse '$emailAdress;    
  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. }