src/Controller/Utilisateurs/PasswordRecoveryController.php line 27

  1. <?php
  2. namespace App\Controller\Utilisateurs;
  3. use App\Form\GetResetPasswordEmailForm;
  4. use App\Form\NewPasswordForm;
  5. use App\Service\MailSender;
  6. use App\Service\Utilisateurs;
  7. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  8. use Symfony\Component\HttpFoundation\Response;
  9. use Symfony\Component\Routing\Annotation\Route;
  10. use Symfony\Component\HttpFoundation\Request;
  11. use App\Service\PasswordRecovery;
  12. /**
  13.  * Class for resetting password process
  14.  * Class MotDePasseOublieController
  15.  *
  16.  * @package App\Controller\Utilisateurs\MotDePasseOublie
  17.  */
  18. class PasswordRecoveryController extends AbstractController
  19. {
  20.     /**
  21.      * @Route("/mot-de-passe-recuperation", name="motDePasseRecuperation" , methods = {"GET","POST"})
  22.      */
  23.     public function motDePasseOublie(
  24.         Request $request,
  25.         PasswordRecovery $passwordRecovery,
  26.         MailSender $mailSender,
  27.     ) {
  28.         $form $this->createForm(GetResetPasswordEmailForm::class);
  29.         $errors = [];
  30.         $done false;
  31.         if ($request->isMethod("POST")) {
  32.             $form->handleRequest($request);
  33.             if ($form->isSubmitted() && $form->isValid()) {
  34.                 if ($idRecovery $passwordRecovery->resetPasswordCreation($form->get('email')->getData())) {
  35.                     if ($userData $passwordRecovery->getUserData($idRecovery)) {
  36.                         if ($mailSender->sendRecoveryMail($idRecovery$userData[0]['mail'])) {
  37.                             $done true;
  38.                         } else {
  39.                             $errors[] = array(
  40.                                 "message" => 'Impossible d\'envoyer le mail de 
  41.                             récupération, veuillez nous contacter pour résoudre le problème.'
  42.                             );
  43.                         }
  44.                     } else {
  45.                         $errors[] = array(
  46.                             "message" => 'Impossible de récupérer les données de l\'utilisateur, le mail est inconnu ou le compte est inactif.
  47.                             Veuillez nous contacter pour résoudre le problème.'
  48.                         );
  49.                     }
  50.                 } else {
  51.                     $errors[] = array(
  52.                         "message" => 'Impossible de récupérer les données de l\'utilisateur, le mail est inconnu ou le compte est inactif.
  53.                                 Veuillez nous contacter pour résoudre le problème.'
  54.                     );
  55.                 }
  56.             } else {
  57.                 $errors $form->getErrors(true);
  58.             }
  59.         }
  60.         return $this->render('users/reset-password.html.twig', [
  61.             'form' => $this->createForm(GetResetPasswordEmailForm::class),
  62.             'errors' => $errors,
  63.             'done' => $done
  64.         ]);
  65.     }
  66.     /**
  67.      * @Route("/recuperation-mot-de-passe/{idRecovery}", name="newPassword" , methods = {"GET","POST"})
  68.      */
  69.     public function resetPassword(
  70.         Request $request,
  71.         Utilisateurs $userService,
  72.         PasswordRecovery $passwordRecovery,
  73.         $idRecovery
  74.     ) {
  75.         $isValid $passwordRecovery->checkIfIdRecoveryIsValid($idRecovery);
  76.         $errors = [];
  77.         if ($isValid === 'ok') {
  78.             $done false;
  79.             $form $this->createForm(NewPasswordForm::class,null,['idRecovery' => $idRecovery]);
  80.             if ($request->isMethod("POST")) {
  81.                 $form->handleRequest($request);
  82.                 if ($form->isSubmitted() && $form->isValid()) {
  83.                     if($userService->updatePassword($form->get('mdp')->getData(), $idRecovery) == "done"){
  84.                         $done true;
  85.                     } else {
  86.                         $errors[] = array(
  87.                             "message" => 'Impossible de mettre à jour le mot de passe, veuillez nous contacter pour résoudre le problème.'
  88.                         );
  89.                     }
  90.                 } else {
  91.                     $errors $form->getErrors(true);
  92.                 }
  93.             }
  94.             return $this->render('users/new-password.html.twig', [
  95.                 'form' => $form,
  96.                 'errors' => $errors,
  97.                 'done' => $done
  98.             ]);
  99.         } else {
  100.             $errors[] = array(
  101.                 "message" => 'Votre lien de récupération est inconnu ou périmé, 
  102.                 veuillez en demander un nouveau en recommençant la procédure'
  103.             );
  104.         }
  105.         return $this->render('users/reset-password.html.twig', [
  106.             'form' => $this->createForm(GetResetPasswordEmailForm::class),
  107.             'errors' => $errors
  108.         ]);
  109.     }
  110. }