src/Security/LoginFormAuthenticator.php line 19
<?phpnamespace App\Security;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\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;use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;class LoginFormAuthenticator extends AbstractLoginFormAuthenticator{use TargetPathTrait;public const LOGIN_ROUTE = 'app_login';protected $authorizationChecker;public function __construct(private UrlGeneratorInterface $urlGenerator, AuthorizationCheckerInterface $authorizationChecker){$this->authorizationChecker = $authorizationChecker;}public function authenticate(Request $request): Passport{$email = $request->request->get('email', '');$request->getSession()->set(Security::LAST_USERNAME, $email);return new Passport(new UserBadge($email),new PasswordCredentials($request->request->get('password', '')),[new CsrfTokenBadge('authenticate', $request->request->get('_csrf_token')),]);}public function onAuthenticationSuccess(Request $request, TokenInterface $token, string $firewallName): ?Response{// if ($targetPath = $this->getTargetPath($request->getSession(), $firewallName)) {// return new RedirectResponse($targetPath);// }if(true === $this->authorizationChecker->isGranted('ROLE_ADMIN')){return new RedirectResponse($this->urlGenerator->generate('app_sales_invoice_index'));}else if(true === $this->authorizationChecker->isGranted('ROLE_CS')){return new RedirectResponse($this->urlGenerator->generate('app_shipment_index'));}else if(true === $this->authorizationChecker->isGranted('ROLE_SALES')){return new RedirectResponse($this->urlGenerator->generate('app_sales_offer_index'));}else if(true === $this->authorizationChecker->isGranted('ROLE_ACCOUNTS')){return new RedirectResponse($this->urlGenerator->generate('app_receive_voucher_index'));}else if(true === $this->authorizationChecker->isGranted('ROLE_CUSTOMER')){return new RedirectResponse($this->urlGenerator->generate('app_customer_shipment_index'));}else{return new RedirectResponse($this->urlGenerator->generate('app_shipment_booking_index'));}// For example://throw new \Exception('TODO: provide a valid redirect inside '.__FILE__);}protected function getLoginUrl(Request $request): string{return $this->urlGenerator->generate(self::LOGIN_ROUTE);}}