src/Security/SecurityAuthenticator.php line 23
<?phpnamespace App\Security;use App\Entity\Main\Administrator;use App\Repository\AdministratorRepository;use Doctrine\ORM\EntityManagerInterface;use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;use Symfony\Component\HttpFoundation\RedirectResponse;use Symfony\Component\HttpFoundation\Request;use Symfony\Component\HttpFoundation\Response;use Symfony\Component\Routing\Generator\UrlGeneratorInterface;use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;use Symfony\Component\Security\Core\Exception\AuthenticationException;use Symfony\Component\Security\Core\Security;use Symfony\Component\Security\Http\Authenticator\AbstractLoginFormAuthenticator;use Symfony\Component\Security\Http\Authenticator\Passport\Badge\CsrfTokenBadge;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;final class SecurityAuthenticator extends AbstractLoginFormAuthenticator{use TargetPathTrait;public const LOGIN_ROUTE = 'login';public function __construct(private UrlGeneratorInterface $urlGenerator,private ParameterBagInterface $parameterBag,private AdministratorRepository $userRepository,private EntityManagerInterface $manager) {}public function authenticate(Request $request): Passport{$username = $request->request->get('email', '');$password = $request->request->get('password', '');assert(is_string($username) && is_string($password));$request->getSession()->set(Security::LAST_USERNAME, $username);/** @var string $token */$token = $request->get('_csrf_token');return new Passport(new UserBadge($username),new PasswordCredentials($password),[new CsrfTokenBadge('authenticate', $token),]);}public function onAuthenticationSuccess(Request $request, TokenInterface $token, string $firewallName): ?Response{$user = $token->getUser();if (!$user instanceof Administrator) {throw new \RuntimeException('Invalid user class '.($user ? $user::class : 'null'));}if ('ROLE_CONTENT_MANAGER' === $user->getRole()) {return new RedirectResponse($this->urlGenerator->generate('admin_app_market_content_news_list'));}if ($targetPath = $this->getTargetPath($request->getSession(), $firewallName)) {return new RedirectResponse($targetPath);}return new RedirectResponse($this->urlGenerator->generate('sonata_admin_dashboard'));}/*** Override to change what happens after a bad username/password is submitted.*/public function onAuthenticationFailure(Request $request, AuthenticationException $exception): Response{if ($request->hasSession()) {$request->getSession()->set(Security::AUTHENTICATION_ERROR, $exception);}$url = $this->getLoginUrl($request);return new RedirectResponse($url);}protected function getLoginUrl(Request $request): string{return $this->urlGenerator->generate(self::LOGIN_ROUTE);}}