vendor/nucleos/user-bundle/src/EventListener/ResettingListener.php line 67

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. /*
  4.  * This file is part of the NucleosUserBundle package.
  5.  *
  6.  * (c) Christian Gripp <mail@core23.de>
  7.  *
  8.  * For the full copyright and license information, please view the LICENSE
  9.  * file that was distributed with this source code.
  10.  */
  11. namespace Nucleos\UserBundle\EventListener;
  12. use Nucleos\UserBundle\Event\FormEvent;
  13. use Nucleos\UserBundle\Event\GetResponseUserEvent;
  14. use Nucleos\UserBundle\Form\Model\Resetting;
  15. use Nucleos\UserBundle\NucleosUserEvents;
  16. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  17. use Symfony\Component\HttpFoundation\RedirectResponse;
  18. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  19. final class ResettingListener implements EventSubscriberInterface
  20. {
  21.     private UrlGeneratorInterface $router;
  22.     private int $tokenTtl;
  23.     public function __construct(UrlGeneratorInterface $routerint $tokenTtl)
  24.     {
  25.         $this->router   $router;
  26.         $this->tokenTtl $tokenTtl;
  27.     }
  28.     public static function getSubscribedEvents(): array
  29.     {
  30.         return [
  31.             NucleosUserEvents::RESETTING_RESET_INITIALIZE => 'onResettingResetInitialize',
  32.             NucleosUserEvents::RESETTING_RESET_SUCCESS    => 'onResettingResetSuccess',
  33.             NucleosUserEvents::RESETTING_RESET_REQUEST    => 'onResettingResetRequest',
  34.         ];
  35.     }
  36.     public function onResettingResetInitialize(GetResponseUserEvent $event): void
  37.     {
  38.         if (!$event->getUser()->isPasswordRequestNonExpired($this->tokenTtl)) {
  39.             $event->setResponse(new RedirectResponse($this->router->generate('nucleos_user_resetting_request')));
  40.         }
  41.     }
  42.     public function onResettingResetSuccess(FormEvent $event): void
  43.     {
  44.         $model $event->getForm()->getData();
  45.         if (!$model instanceof Resetting) {
  46.             return;
  47.         }
  48.         $user $model->getUser();
  49.         $user->setConfirmationToken(null);
  50.         $user->setPasswordRequestedAt(null);
  51.         $user->setEnabled(true);
  52.     }
  53.     public function onResettingResetRequest(GetResponseUserEvent $event): void
  54.     {
  55.         if (!$event->getUser()->isAccountNonLocked()) {
  56.             $event->setResponse(new RedirectResponse($this->router->generate('nucleos_user_resetting_request')));
  57.         }
  58.     }
  59. }