src/Controller/forgotPassword/ForgotPasswordController.php line 23
<?phpnamespace App\Controller\forgotPassword;use App\Controller\BaseController;use Exception;use Psr\Log\LoggerInterface;use Symfony\Component\Form\Extension\Core\Type\EmailType;use Symfony\Component\Form\Extension\Core\Type\PasswordType;use Symfony\Component\Form\Extension\Core\Type\RepeatedType;use Symfony\Component\Form\FormInterface;use Symfony\Component\HttpFoundation\RedirectResponse;use Symfony\Component\HttpFoundation\Request;use Symfony\Component\HttpFoundation\Response;use Symfony\Component\Routing\Annotation\Route;use Symfony\Component\Validator\Constraints\NotBlank;use Symfony\Component\Validator\Constraints\NotCompromisedPassword;class ForgotPasswordController extends BaseController{#[Route('/forgot-password', name: 'forgot_password_step_one')]public function indexAction(LoggerInterface $logger, Request $request): Request|Response{$form = $this->forgotPasswordForm();$form->handleRequest($request);$showMessage = false;if ($form->isSubmitted() && $form->isValid()) {$data = $form->getData();try {$response = $this->client()->post('/forgot-password-verify-user', ['json' => ['username' => $data['username']]]);if ($response->getStatusCode() === Response::HTTP_OK) {$showMessage = true;}} catch (Exception $exception) {$logger->error($exception->getMessage());}}return $this->render('forgot-password/index.html.twig', ['form' => $form->createView(),'showMessage' => $showMessage,'message' => 'Please enter your email below']);}#[Route('/forgot-password/rest/{token}', name: 'forgot_step_two')]public function restAction(string $token, LoggerInterface $logger, Request $request): Request|Response{$form = $this->passwordForm();$form->handleRequest($request);if ($form->isSubmitted() && $form->isValid()) {$data = $form->getData();try {$this->client()->post('/forgot-password', ['json' => ['token' => $token,'password' => $data['password']]]);$this->addFlash(BaseController::FLASH_SUCCESS, 'Your Password has been Updated');} catch (Exception $exception) {$logger->error($exception->getMessage());}return new RedirectResponse($this->generateUrl('login'));}return $this->render('forgot-password/index.html.twig', ['showMessage' => false,'form' => $form->createView(),'message' => 'Please enter your new password below']);}public function forgotPasswordForm(): FormInterface{return $this->createFormBuilder()->add('username', EmailType::class, ['required' => true,'constraints' => [new NotCompromisedPassword(),new NotBlank(),]])->getForm();}private function passwordForm(): FormInterface{return $this->createFormBuilder()->add('password', RepeatedType::class, ['type' => PasswordType::class,'invalid_message' => 'The password fields must match.','required' => true,'first_options' => ['label' => 'Password'],'second_options' => ['label' => 'Repeat Password'],'constraints' => [new NotCompromisedPassword(),new NotBlank(),]])->getForm();}}