- <?php
- namespace App\Controller;
- use Exception;
- use JsonException;
- use App\Form\EmailFormType;
- use App\Form\RenewPasswordFormType;
- use App\Repository\MenuRepository;
- use App\Service\AuthService;
- use Doctrine\Persistence\ManagerRegistry;
- use Symfony\Component\HttpFoundation\Request;
- use Symfony\Component\HttpFoundation\Response;
- use Symfony\Component\Routing\Annotation\Route;
- /**
-  * @Route("/password", priority="1", options={"expose"=true})
-  */
- class ResetPasswordController extends PageController
- {
-     private AuthService $authService;
-     public function __construct(
-         ManagerRegistry $doctrine,
-         MenuRepository $menuRepository,
-         AuthService $authService
-     ) {
-         parent::__construct($doctrine, $menuRepository);
-         $this->authService = $authService;
-     }
-     /**
-      * @Route("/recover", name="reset-password-recover")
-      *
-      * @throws Exception
-      */
-     public function recover(Request $request): Response
-     {
-         $this->_initDatas($request, 'reset-password');
-         $form = $this->createForm(EmailFormType::class);
-         $form->handleRequest($request);
-         if ($form->isSubmitted() && $form->isValid()) {
-             $isSend = $this->authService->recover($form->get('email')->getData());
-             $dataResponse = ['recover_email_send' => $isSend];
-         } else {
-             $dataResponse = [
-                 'requestForm' => $form->createView(),
-             ];
-         }
-         return $this->render('reset_password/recover.html.twig', $this->getDatas($dataResponse));
-     }
-     public function verify(string $hash, Request $request): Response
-     {
-         $isValid = $this->authService->passwordVerify($hash);
-         if ($isValid) {
-             $email = base64_encode(urlencode($request->query->get('email')));
-             return $this->redirectToRoute('password-renew', ['hash' => $hash, md5('email') => $email]);
-         }
-         return $this->redirectToRoute('front_index_page');
-     }
-     /**
-      * @Route("/renew/{hash}", name="password-renew")
-      *
-      * @throws JsonException
-      */
-     public function renew(string $hash, Request $request): Response
-     {
-         $data = [];
-         $dataResponse = null;
-         $email = urldecode(base64_decode($request->query->get(md5('email')), true));
-         $this->_initDatas($request, 'reset-password');
-         $form = $this->createForm(RenewPasswordFormType::class);
-         $form->handleRequest($request);
-         if ($form->isSubmitted() && $form->isValid()) {
-             $datas = $request->request->get('renew_password_form');
-             $data['password'] = $datas['password']['first'];
-             $data['email'] = $datas['email'];
-             $isResetted = $this->authService->resetPassword($hash, $data);
-             if ($isResetted) {
-                 $this->addFlash('success', 'password.reset.success');
-                 return $this->redirectToRoute('client_auth');
-             }
-         } else {
-             $dataResponse = [
-                 'resetForm' => $form->createView(),
-                 'email' => $email,
-             ];
-         }
-         return $this->render('reset_password/reset.html.twig', $this->getDatas($dataResponse));
-     }
- }
-