src/Controller/ResetPasswordController.php line 37

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Exception;
  4. use JsonException;
  5. use App\Form\EmailFormType;
  6. use App\Form\RenewPasswordFormType;
  7. use App\Repository\MenuRepository;
  8. use App\Service\AuthService;
  9. use Doctrine\Persistence\ManagerRegistry;
  10. use Symfony\Component\HttpFoundation\Request;
  11. use Symfony\Component\HttpFoundation\Response;
  12. use Symfony\Component\Routing\Annotation\Route;
  13. /**
  14.  * @Route("/password", priority="1", options={"expose"=true})
  15.  */
  16. class ResetPasswordController extends PageController
  17. {
  18.     private AuthService $authService;
  19.     public function __construct(
  20.         ManagerRegistry $doctrine,
  21.         MenuRepository $menuRepository,
  22.         AuthService $authService
  23.     ) {
  24.         parent::__construct($doctrine$menuRepository);
  25.         $this->authService $authService;
  26.     }
  27.     /**
  28.      * @Route("/recover", name="reset-password-recover")
  29.      *
  30.      * @throws Exception
  31.      */
  32.     public function recover(Request $request): Response
  33.     {
  34.         $this->_initDatas($request'reset-password');
  35.         $form $this->createForm(EmailFormType::class);
  36.         $form->handleRequest($request);
  37.         if ($form->isSubmitted() && $form->isValid()) {
  38.             $isSend $this->authService->recover($form->get('email')->getData());
  39.             $dataResponse = ['recover_email_send' => $isSend];
  40.         } else {
  41.             $dataResponse = [
  42.                 'requestForm' => $form->createView(),
  43.             ];
  44.         }
  45.         return $this->render('reset_password/recover.html.twig'$this->getDatas($dataResponse));
  46.     }
  47.     public function verify(string $hashRequest $request): Response
  48.     {
  49.         $isValid $this->authService->passwordVerify($hash);
  50.         if ($isValid) {
  51.             $email base64_encode(urlencode($request->query->get('email')));
  52.             return $this->redirectToRoute('password-renew', ['hash' => $hashmd5('email') => $email]);
  53.         }
  54.         return $this->redirectToRoute('front_index_page');
  55.     }
  56.     /**
  57.      * @Route("/renew/{hash}", name="password-renew")
  58.      *
  59.      * @throws JsonException
  60.      */
  61.     public function renew(string $hashRequest $request): Response
  62.     {
  63.         $data = [];
  64.         $dataResponse null;
  65.         $email urldecode(base64_decode($request->query->get(md5('email')), true));
  66.         $this->_initDatas($request'reset-password');
  67.         $form $this->createForm(RenewPasswordFormType::class);
  68.         $form->handleRequest($request);
  69.         if ($form->isSubmitted() && $form->isValid()) {
  70.             $datas $request->request->get('renew_password_form');
  71.             $data['password'] = $datas['password']['first'];
  72.             $data['email'] = $datas['email'];
  73.             $isResetted $this->authService->resetPassword($hash$data);
  74.             if ($isResetted) {
  75.                 $this->addFlash('success''password.reset.success');
  76.                 return $this->redirectToRoute('client_auth');
  77.             }
  78.         } else {
  79.             $dataResponse = [
  80.                 'resetForm' => $form->createView(),
  81.                 'email' => $email,
  82.             ];
  83.         }
  84.         return $this->render('reset_password/reset.html.twig'$this->getDatas($dataResponse));
  85.     }
  86. }