src/Wam/EventSubscriber/PasswordResettingSubscriber.php line 27

Open in your IDE?
  1. <?php
  2. namespace App\Wam\EventSubscriber;
  3. use AppBundle\Repository\UserRepository;
  4. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  5. use Symfony\Component\HttpFoundation\RedirectResponse;
  6. use Symfony\Component\HttpKernel\Event\RequestEvent;
  7. use Symfony\Component\HttpKernel\KernelEvents;
  8. use Symfony\Component\Routing\RouterInterface;
  9. class PasswordResettingSubscriber implements EventSubscriberInterface
  10. {
  11.     private const USERNAME_PARAM 'login';
  12.     public function __construct(private UserRepository $userRepository, private RouterInterface $router)
  13.     {
  14.     }
  15.     public static function getSubscribedEvents(): array
  16.     {
  17.         return [
  18.             KernelEvents::REQUEST => ['onKernelRequest'],
  19.         ];
  20.     }
  21.     public function onKernelRequest(RequestEvent $event): void
  22.     {
  23.         $request $event->getRequest();
  24.         if (!$event->isMasterRequest()) {
  25.             return;
  26.         }
  27.         $resettingPath $this->router->generate('fos_user_resetting_request');
  28.         if ($request->getPathInfo() !== $resettingPath) {
  29.             return;
  30.         }
  31.         if (!$request->isMethod('GET')) {
  32.             return;
  33.         }
  34.         $username $request->query->get(self::USERNAME_PARAM);
  35.         if (empty($username)) {
  36.             return;
  37.         }
  38.         $user $this->userRepository->findOneBy(['email' => $username]);
  39.         if (null === $user || (empty($user->getPermId()) && empty($user->getLawFirm()?->getEcmId()))) {
  40.             return;
  41.         }
  42.         $event->setResponse(new RedirectResponse($this->router->generate('wam_login')));
  43.     }
  44. }