<?php/* * This file is part of the Symfony package. * * (c) Fabien Potencier <fabien@symfony.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */namespace Symfony\Component\Security\Http\EventListener;use Symfony\Component\Security\Core\User\UserProviderInterface;use Symfony\Component\Security\Http\Authenticator\Passport\Badge\UserBadge;use Symfony\Component\Security\Http\Event\CheckPassportEvent;/** * Configures the user provider as user loader, if no user load * has been explicitly set. * * @author Wouter de Jong <wouter@wouterj.nl> * * @final */class UserProviderListener{ private $userProvider; public function __construct(UserProviderInterface $userProvider) { $this->userProvider = $userProvider; } public function checkPassport(CheckPassportEvent $event): void { $passport = $event->getPassport(); if (!$passport->hasBadge(UserBadge::class)) { return; } /** @var UserBadge $badge */ $badge = $passport->getBadge(UserBadge::class); if (null !== $badge->getUserLoader()) { return; } // @deprecated since Symfony 5.3, change to $this->userProvider->loadUserByIdentifier() in 6.0 if (method_exists($this->userProvider, 'loadUserByIdentifier')) { $badge->setUserLoader([$this->userProvider, 'loadUserByIdentifier']); } else { trigger_deprecation('symfony/security-http', '5.3', 'Not implementing method "loadUserByIdentifier()" in user provider "%s" is deprecated. This method will replace "loadUserByUsername()" in Symfony 6.0.', get_debug_type($this->userProvider)); $badge->setUserLoader([$this->userProvider, 'loadUserByUsername']); } }}