- <?php
- /*
-  * This file is part of the FOSUserBundle package.
-  *
-  * (c) FriendsOfSymfony <http://friendsofsymfony.github.com/>
-  *
-  * For the full copyright and license information, please view the LICENSE
-  * file that was distributed with this source code.
-  */
- namespace FOS\UserBundle\EventListener;
- use FOS\UserBundle\Event\FormEvent;
- use FOS\UserBundle\Event\GetResponseUserEvent;
- use FOS\UserBundle\FOSUserEvents;
- use Symfony\Component\EventDispatcher\EventSubscriberInterface;
- use Symfony\Component\HttpFoundation\RedirectResponse;
- use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
- /**
-  * @internal
-  * @final
-  */
- class ResettingListener implements EventSubscriberInterface
- {
-     /**
-      * @var UrlGeneratorInterface
-      */
-     private $router;
-     /**
-      * @var int
-      */
-     private $tokenTtl;
-     /**
-      * ResettingListener constructor.
-      *
-      * @param int $tokenTtl
-      */
-     public function __construct(UrlGeneratorInterface $router, $tokenTtl)
-     {
-         $this->router = $router;
-         $this->tokenTtl = $tokenTtl;
-     }
-     /**
-      * {@inheritdoc}
-      */
-     public static function getSubscribedEvents()
-     {
-         return [
-             FOSUserEvents::RESETTING_RESET_INITIALIZE => 'onResettingResetInitialize',
-             FOSUserEvents::RESETTING_RESET_SUCCESS => 'onResettingResetSuccess',
-             FOSUserEvents::RESETTING_RESET_REQUEST => 'onResettingResetRequest',
-         ];
-     }
-     public function onResettingResetInitialize(GetResponseUserEvent $event)
-     {
-         if (!$event->getUser()->isPasswordRequestNonExpired($this->tokenTtl)) {
-             $event->setResponse(new RedirectResponse($this->router->generate('fos_user_resetting_request')));
-         }
-     }
-     public function onResettingResetSuccess(FormEvent $event)
-     {
-         /** @var $user \FOS\UserBundle\Model\UserInterface */
-         $user = $event->getForm()->getData();
-         $user->setConfirmationToken(null);
-         $user->setPasswordRequestedAt(null);
-         $user->setEnabled(true);
-     }
-     public function onResettingResetRequest(GetResponseUserEvent $event)
-     {
-         if (!$event->getUser()->isAccountNonLocked()) {
-             $event->setResponse(new RedirectResponse($this->router->generate('fos_user_resetting_request')));
-         }
-     }
- }
-