Spaces:
No application file
No application file
| namespace Mautic\UserBundle\Security\Authentication; | |
| use Symfony\Component\HttpFoundation\RedirectResponse; | |
| use Symfony\Component\HttpFoundation\Request; | |
| use Symfony\Component\HttpFoundation\Response; | |
| use Symfony\Component\Routing\RouterInterface; | |
| 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\Authentication\AuthenticationFailureHandlerInterface; | |
| use Symfony\Component\Security\Http\Authentication\AuthenticationSuccessHandlerInterface; | |
| class AuthenticationHandler implements AuthenticationSuccessHandlerInterface, AuthenticationFailureHandlerInterface | |
| { | |
| public function __construct( | |
| private RouterInterface $router | |
| ) { | |
| } | |
| /** | |
| * @return Response | |
| */ | |
| public function onAuthenticationSuccess(Request $request, TokenInterface $token) | |
| { | |
| // Remove post_logout if set | |
| $request->getSession()->remove('post_logout'); | |
| $format = $request->request->get('format'); | |
| if ('json' == $format) { | |
| $array = ['success' => true]; | |
| $response = new Response(json_encode($array)); | |
| $response->headers->set('Content-Type', 'application/json'); | |
| return $response; | |
| } else { | |
| $redirectUrl = $request->getSession()->get('_security.main.target_path', $this->router->generate('mautic_dashboard_index')); | |
| return new RedirectResponse($redirectUrl); | |
| } | |
| } | |
| /** | |
| * @return Response | |
| */ | |
| public function onAuthenticationFailure(Request $request, AuthenticationException $exception) | |
| { | |
| // Remove post_logout if set | |
| $request->getSession()->remove('post_logout'); | |
| $format = $request->request->get('format'); | |
| if ('json' == $format) { | |
| $array = ['success' => false, 'message' => $exception->getMessage()]; | |
| $response = new Response(json_encode($array)); | |
| $response->headers->set('Content-Type', 'application/json'); | |
| return $response; | |
| } else { | |
| $request->getSession()->set(Security::AUTHENTICATION_ERROR, $exception); | |
| return new RedirectResponse($this->router->generate('login')); | |
| } | |
| } | |
| } | |