src/Security/LoginAuthentificationAuthenticator.php line 23
<?phpnamespace App\Security;use Symfony\Component\HttpFoundation\RedirectResponse;use Symfony\Component\HttpFoundation\Request;use Symfony\Component\HttpFoundation\Response;use Doctrine\Persistence\ManagerRegistry;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\Exception\DisabledException;use App\Entity\User;class LoginAuthentificationAuthenticator extends AbstractLoginFormAuthenticator{use TargetPathTrait;public const LOGIN_ROUTE = 'app_login';private UrlGeneratorInterface $urlGenerator;private ManagerRegistry $doctrine;public function __construct(UrlGeneratorInterface $urlGenerator, ManagerRegistry $doctrine){$this->urlGenerator = $urlGenerator;$this->doctrine = $doctrine;}public function authenticate(Request $request): Passport{if ($request->request->has('g-recaptcha-response')) {if ($request->request->get('g-recaptcha-response') != '') {$username = $request->request->get('_username', '');$request->getSession()->set(Security::LAST_USERNAME, $username);// Récupérer l'utilisateur basé sur le nom d'utilisateur$user = $this->doctrine->getRepository(User::class)->findOneBy(['email'=>$username]);// dump($user);die;if($user){if ($user->getEtat() === 0 ) {// Si le compte est désactivé, lancez une exception DisabledExceptionthrow new DisabledException('Votre compte a été désactivé. Veuillez contacter l\'administrateur.');}}return new Passport(new UserBadge($username),new PasswordCredentials($request->request->get('_password', '')),[new CsrfTokenBadge('authenticate', $request->request->get('_csrf_token')),]);}}return new Passport(new UserBadge(''),new PasswordCredentials(''),[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 ($request->getSession()->has('target_path')) {return new RedirectResponse($this->urlGenerator->generate('account_disabled'));}*/$user = $token->getUser();$role=$user->getRoles()[0];if($role === "ROLE_ADMIN"){return new RedirectResponse($this->urlGenerator->generate('app_admin'));}else if($role === "ROLE_DIRECTEUR"){return new RedirectResponse($this->urlGenerator->generate('app_directeur'));}else if($role === "ROLE_RESPONSABLE"){return new RedirectResponse($this->urlGenerator->generate('app_responsable'));}else if ($role === "ROLE_CHERCHEUR"){return new RedirectResponse($this->urlGenerator->generate('app_chercheur'));}}protected function getLoginUrl(Request $request): string{return $this->urlGenerator->generate(self::LOGIN_ROUTE);}}