em = $em; $this->authenticationUtils = $authenticationUtils; } public function authenticate(Request $request): Passport { $email = $request->request->get('email', ''); $request->getSession()->set($this->authenticationUtils->getLastUsername(), $email); return new Passport( new UserBadge($email), new PasswordCredentials($request->request->get('password', '')), [ new CsrfTokenBadge('authenticate', $request->request->get('_csrf_token')), new RememberMeBadge(), ] ); } public function onAuthenticationSuccess(Request $request, TokenInterface $token, string $firewallName): ?Response { if ($targetPath = $this->getTargetPath($request->getSession(), $firewallName)) { return new RedirectResponse($targetPath); } /** @var User $user */ $user = $token->getUser(); $user->setLastLogin(new \DateTime()); $this->em->persist($user); $this->em->flush(); $this->em->clear(); if ($user->hasRole('ROLE_ADMIN')){ return new RedirectResponse($this->urlGenerator->generate('admin_home_index')); }else{ return new RedirectResponse($this->urlGenerator->generate('home_index')); } } protected function getLoginUrl(Request $request): string { return $this->urlGenerator->generate(self::LOGIN_ROUTE); } }