<?php
// src/Controller/RegistrationController.php
namespace App\Controller;
use App\Entity\AppUser;
use App\Form\RegistrationFormType;
use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Mailer\MailerInterface;
use Symfony\Bridge\Twig\Mime\TemplatedEmail;
use Symfony\Component\Mime\Email;
/**
* @Route("/{_locale}/resetting")
*/
class ResettingController extends AbstractController
{
/**
* @Route("/request", name="resetting.request")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function request(Request $request, MailerInterface $mailer)
{
$em = $this->getDoctrine()
->getManager();
$error = '';
$ok_soumission = '';
if($request->getMethod() == 'POST'){
$emailAdress = $request->request->get('email');
$user = $em->getRepository(AppUser::class)
->findOneByEmail($emailAdress);
if($user == null){
$error = 'email non trouvé';
}else{
$emailToken = time();
$user->setEmailToken($emailToken);
$email = (new TemplatedEmail())
->from('harmony-noreply@assiecloudmail.com')
->to($emailAdress)
->subject('Réinitilaisez votre mot de passe')
->htmlTemplate('resetting/email_password_resetting.html.twig')
->context([
'user' => $user,
'emailToken' => $emailToken
]);
$mailer->send($email); // Dispatches the message
$em->flush();
$ok_soumission = 'Un lien de réinitialisation a été envoyé à l\'adresse '. $emailAdress;
}
}
return $this->render('resetting/request.html.twig', [
'error' => $error,
'ok_soumission' => $ok_soumission
]);
}
/**
* @Route("/reset/{emailToken}", name="resetting_reset")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function reset(Request $request, UserPasswordHasherInterface $passwordHasher, UserAuthenticatorInterface $userAuthenticator, LoginFormAuthenticator $authenticator, $emailToken)
{
$em = $this->getDoctrine()
->getManager();
$error = '';
$ok_soumission = '';
$user = $em->getRepository(AppUser::class)
->findOneByEmailToken($emailToken);
if($user == null){
throw $this->createNotFoundException('Lien non valide');
}
if($request->getMethod() == 'POST'){
$pass1 = $request->request->get('pass1');
$pass2 = $request->request->get('pass2');
if($pass1 != $pass2){
$error = 'Les deux mot de passe ne correspondent pas';
} else{
$user->setEmailToken('');
$hashedPassword = $passwordHasher->hashPassword($user, $pass2);
$user->setPassword($hashedPassword);
$em->flush();
return $this->redirectToRoute('resetting_resetted');
}
}
return $this->render('resetting/reset.html.twig', [
'error' => $error,
'ok_soumission' => $ok_soumission
]);
}
/**
* @Route("/resetted", name="resetting_resetted")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function resetted(Request $request)
{
return $this->render('resetting/resetted.html.twig', [
]);
}
}