src/Module/Security/LoginFormAuthenticator.php line 24
<?phpnamespace App\Module\Security;use App\Module\Security\Entity\User;use App\Module\Security\Model\PepperValidation;use Doctrine\ORM\EntityManagerInterface;use Symfony\Component\HttpFoundation\RedirectResponse;use Symfony\Component\HttpFoundation\Request;use Symfony\Component\HttpFoundation\RequestStack;use Symfony\Component\HttpFoundation\Response;use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;use Symfony\Component\Routing\Generator\UrlGeneratorInterface;use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;use Symfony\Component\Security\Core\Exception\UserNotFoundException;use Symfony\Component\Security\Csrf\CsrfTokenManagerInterface;use Symfony\Component\Security\Http\Authenticator\AbstractLoginFormAuthenticator;use Symfony\Component\Security\Http\Authenticator\Passport\Badge\CsrfTokenBadge;use Symfony\Component\Security\Http\Authenticator\Passport\Badge\RememberMeBadge;use Symfony\Component\Security\Http\Authenticator\Passport\Badge\UserBadge;use Symfony\Component\Security\Http\Authenticator\Passport\Credentials\PasswordCredentials;use Symfony\Component\Security\Http\Authenticator\Passport\Passport;use Symfony\Component\Security\Http\Util\TargetPathTrait;class LoginFormAuthenticator extends AbstractLoginFormAuthenticator{use TargetPathTrait;public const LOGIN_ROUTE = 'app_login';public function __construct(private readonly RequestStack $requestStack,private readonly EntityManagerInterface $entityManager,private readonly UrlGeneratorInterface $urlGenerator,private readonly CsrfTokenManagerInterface $csrfTokenManager,private readonly UserPasswordHasherInterface $userPasswordHasher,private readonly PepperValidation $pepperStorage,){}public function authenticate(Request $request): Passport{$email = $request->request->get('email');$password = $request->request->get('password');// Check for Valid Pepper$paramBag = $request->request->get('pepper');$this->requestStack->getSession()->set('pepper', $paramBag);$this->pepperStorage->setPepper($paramBag);if(!$this->pepperStorage->validatePepper()){throw new UserNotFoundException();}return new Passport(new UserBadge($email, function($userIdentifier) {// optionally pass a callback to load the User manually$user = $this->entityManager->getRepository(User::class)->findOneBy(['email' => $userIdentifier]);if (!$user) {throw new UserNotFoundException();}return $user;}),new PasswordCredentials($password),[new CsrfTokenBadge('authenticate',$request->request->get('_csrf_token')),(new RememberMeBadge())->enable(),]);}public function onAuthenticationSuccess(Request $request, TokenInterface $token, string $firewallName): Response{if ($targetPath = $this->getTargetPath($this->requestStack->getSession(), $firewallName)) {return new RedirectResponse($targetPath);}return new RedirectResponse($this->urlGenerator->generate('app_module_firewall_firewall_list__invoke'));}protected function getLoginUrl(Request $request): string{return $this->urlGenerator->generate(self::LOGIN_ROUTE);}}