vendor/friendsofsymfony/user-bundle/EventListener/AuthenticationListener.php line 66
- <?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;
- }
- /**
- * {@inheritdoc}
- */
- public static function getSubscribedEvents(): array
- {
- return [
- FOSUserEvents::REGISTRATION_COMPLETED => 'authenticate',
- FOSUserEvents::REGISTRATION_CONFIRMED => 'authenticate',
- FOSUserEvents::RESETTING_RESET_COMPLETED => 'authenticate',
- ];
- }
- /**
- * @param string $eventName
- */
- 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.).
- }
- }
- }