<?php
namespace App\Controller;
use App\Form\ForgotPasswordFormType;
use App\Form\LoginFormType;
use App\Infrastructure\RequestDto\ForgotPasswordDto;
use App\Infrastructure\Service\Impl\ResetPasswordServiceImpl;
use App\Infrastructure\RequestDto\LoginDto;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
class ResetPasswordController extends AbstractController
{
private $resetPasswordService;
public function __construct(ResetPasswordServiceImpl $resetPasswordService)
{
$this->resetPasswordService = $resetPasswordService;
}
/**
* @Route("/forgot/password", name="app_forgot_password",methods={"GET","POST"})
*/
public function forgotPassword(Request $request): Response
{
$forgotPasswordDto = new ForgotPasswordDto();
$form = $this->createForm(ForgotPasswordFormType::class, $forgotPasswordDto);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$this->resetPasswordService->checkEmail($forgotPasswordDto->getProfessionalEmail());
$this->addFlash('success', 'Merci de vérifier votre boite email!');
return $this->redirectToRoute('app_forgot_password');
}
return $this->render('reset_password/forgot_password.html.twig', [
'form' => $form->createView()
]);
}
/**
* @Route("/reset/password/{token}", name="app_reset_password")
*/
public function resetPassword(string $token): Response
{
$result = $this->resetPasswordService->checkToken($token);
if (array_key_exists('collaborator_id', $result)) {
return $this->render('reset_password/index.html.twig', [
'id' => $result->collaborator_id,
'token' => $token,
]);
}
$this->addFlash('error', end($result->error));
return $this->redirectToRoute('app_forgot_password');
}
/**
* @Route("/update/password", name="app_update_password")
*/
public function updatePassword(Request $request): Response
{
$this->resetPasswordService->resetPassword(
$request->request->get('token'),
$request->request->get("id"),
$request->request->get("password")
);
return $this->redirectToRoute('app_login');
}
}