src/Http/Auth/Controller/ForgotPasswordController.php line 16

Open in your IDE?
  1. <?php
  2. namespace App\Http\Auth\Controller;
  3. use App\Core\Notification\Message\Email\Auth\ResetPasswordEmailMessage;
  4. use App\Domain\User\Entity\User;
  5. use App\Domain\User\Repository\UserRepository;
  6. use App\Http\Auth\Form\ForgotPasswordType;
  7. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  8. use Symfony\Component\HttpFoundation\Request;
  9. use Symfony\Component\HttpFoundation\Response;
  10. use Symfony\Component\Messenger\MessageBusInterface;
  11. use Symfony\Component\Routing\Annotation\Route;
  12. #[Route("/forgot-password"name"forgot_password")]
  13. class ForgotPasswordController extends AbstractController
  14. {
  15.     public function __invoke(Request $request,
  16.                              UserRepository $userRepository,
  17.                              MessageBusInterface $messageBus): Response
  18.     {
  19.         $form $this->createForm(ForgotPasswordType::class);
  20.         $form->handleRequest($request);
  21.         if ($form->isSubmitted() && $form->isValid()) {
  22.             /** @var ?User $user */
  23.             $user $userRepository->findOneBy(['email' => $form->get('email')->getData()]);
  24.             if (is_null($user)) {
  25.                 return $this->render('auth/forgot_password.html.twig', [
  26.                     'form' => $form->createView(),
  27.                     'error' => true,
  28.                 ]);
  29.             }
  30.             $userRepository->createConfirmationToken($user);
  31.             $messageBus->dispatch(new ResetPasswordEmailMessage($user));
  32.             return $this->render('auth/forgot_password.html.twig', [
  33.                 'form' => null,
  34.             ]);
  35.         }
  36.         return $this->render('auth/forgot_password.html.twig', [
  37.             'form' => $form->createView()
  38.         ]);
  39.     }
  40. }