src/Controller/Utilisateurs/PasswordRecoveryController.php line 27
<?php
namespace App\Controller\Utilisateurs;
use App\Form\GetResetPasswordEmailForm;
use App\Form\NewPasswordForm;
use App\Service\MailSender;
use App\Service\Utilisateurs;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Request;
use App\Service\PasswordRecovery;
/**
* Class for resetting password process
* Class MotDePasseOublieController
*
* @package App\Controller\Utilisateurs\MotDePasseOublie
*/
class PasswordRecoveryController extends AbstractController
{
/**
* @Route("/mot-de-passe-recuperation", name="motDePasseRecuperation" , methods = {"GET","POST"})
*/
public function motDePasseOublie(
Request $request,
PasswordRecovery $passwordRecovery,
MailSender $mailSender,
) {
$form = $this->createForm(GetResetPasswordEmailForm::class);
$errors = [];
$done = false;
if ($request->isMethod("POST")) {
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
if ($idRecovery = $passwordRecovery->resetPasswordCreation($form->get('email')->getData())) {
if ($userData = $passwordRecovery->getUserData($idRecovery)) {
if ($mailSender->sendRecoveryMail($idRecovery, $userData[0]['mail'])) {
$done = true;
} else {
$errors[] = array(
"message" => 'Impossible d\'envoyer le mail de
récupération, veuillez nous contacter pour résoudre le problème.'
);
}
} else {
$errors[] = array(
"message" => 'Impossible de récupérer les données de l\'utilisateur, le mail est inconnu ou le compte est inactif.
Veuillez nous contacter pour résoudre le problème.'
);
}
} else {
$errors[] = array(
"message" => 'Impossible de récupérer les données de l\'utilisateur, le mail est inconnu ou le compte est inactif.
Veuillez nous contacter pour résoudre le problème.'
);
}
} else {
$errors = $form->getErrors(true);
}
}
return $this->render('users/reset-password.html.twig', [
'form' => $this->createForm(GetResetPasswordEmailForm::class),
'errors' => $errors,
'done' => $done
]);
}
/**
* @Route("/recuperation-mot-de-passe/{idRecovery}", name="newPassword" , methods = {"GET","POST"})
*/
public function resetPassword(
Request $request,
Utilisateurs $userService,
PasswordRecovery $passwordRecovery,
$idRecovery
) {
$isValid = $passwordRecovery->checkIfIdRecoveryIsValid($idRecovery);
$errors = [];
if ($isValid === 'ok') {
$done = false;
$form = $this->createForm(NewPasswordForm::class,null,['idRecovery' => $idRecovery]);
if ($request->isMethod("POST")) {
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
if($userService->updatePassword($form->get('mdp')->getData(), $idRecovery) == "done"){
$done = true;
} else {
$errors[] = array(
"message" => 'Impossible de mettre à jour le mot de passe, veuillez nous contacter pour résoudre le problème.'
);
}
} else {
$errors = $form->getErrors(true);
}
}
return $this->render('users/new-password.html.twig', [
'form' => $form,
'errors' => $errors,
'done' => $done
]);
} else {
$errors[] = array(
"message" => 'Votre lien de récupération est inconnu ou périmé,
veuillez en demander un nouveau en recommençant la procédure'
);
}
return $this->render('users/reset-password.html.twig', [
'form' => $this->createForm(GetResetPasswordEmailForm::class),
'errors' => $errors
]);
}
}