- <?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\CompatibilityUtil;
- use FOS\UserBundle\Event\FilterUserResponseEvent;
- use FOS\UserBundle\Event\UserEvent;
- use FOS\UserBundle\FOSUserEvents;
- use FOS\UserBundle\Security\LoginManagerInterface;
- use Symfony\Component\EventDispatcher\EventSubscriberInterface;
- use Symfony\Component\Security\Core\Exception\AccountStatusException;
- use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
- /**
-  * @internal
-  *
-  * @final
-  */
- class AuthenticationListener implements EventSubscriberInterface
- {
-     /**
-      * @var LoginManagerInterface
-      */
-     private $loginManager;
-     /**
-      * @var string
-      */
-     private $firewallName;
-     /**
-      * AuthenticationListener constructor.
-      *
-      * @param string $firewallName
-      */
-     public function __construct(LoginManagerInterface $loginManager, $firewallName)
-     {
-         $this->loginManager = $loginManager;
-         $this->firewallName = $firewallName;
-     }
-     public static function getSubscribedEvents(): array
-     {
-         return [
-             FOSUserEvents::REGISTRATION_COMPLETED => 'authenticate',
-             FOSUserEvents::REGISTRATION_CONFIRMED => 'authenticate',
-             FOSUserEvents::RESETTING_RESET_COMPLETED => 'authenticate',
-         ];
-     }
-     /**
-      * @param string $eventName
-      *
-      * @return void
-      */
-     public function authenticate(FilterUserResponseEvent $event, $eventName, EventDispatcherInterface $eventDispatcher)
-     {
-         $eventDispatcher = CompatibilityUtil::upgradeEventDispatcher($eventDispatcher);
-         try {
-             $this->loginManager->logInUser($this->firewallName, $event->getUser(), $event->getResponse());
-             $eventDispatcher->dispatch(new UserEvent($event->getUser(), $event->getRequest()), FOSUserEvents::SECURITY_IMPLICIT_LOGIN);
-         } catch (AccountStatusException $ex) {
-             // We simply do not authenticate users which do not pass the user
-             // checker (not enabled, expired, etc.).
-         }
-     }
- }
-