public function run(ServerRequestInterface $request, ResponseBuilder $responseBuilder) : ResponseInterface { try { $request = new SignInRequest($request); $account = $this->authService->signIn($request->getParameters()); $frontline = $this->frontlineService->fetch(new IncludeFilter([FrontlineScript::TAG_IS_AUTHENTICATED])); $responseBuilder->setStatusSuccess()->setJson($this->signInFormatter->format($account, $frontline)); } catch (AccountNotFoundException $e) { $responseBuilder->setStatusNotFound()->setError($e); } catch (InvalidCredentialsException $e) { $responseBuilder->setStatusNotAllowed()->setError($e); } return $responseBuilder->build(); }