From a1e8b1aa511fd8d51f2ed2fd8b51e093a355466a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torsten=20L=C3=BCcke?= Date: Tue, 6 Apr 2021 21:02:29 +0200 Subject: [PATCH] Es wird die geforderte Error-JSON benutzt. --- api/html/index.php | 39 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/api/html/index.php b/api/html/index.php index 300a3bd..c9e6a2f 100644 --- a/api/html/index.php +++ b/api/html/index.php @@ -5,6 +5,9 @@ $dotenv = Dotenv\Dotenv::createImmutable(dirname(__DIR__)); $dotenv->load(); use DI\Container; +use Psr\Http\Message\ServerRequestInterface; +use Psr\Log\LoggerInterface; +use Slim\Exception\HttpException; use Slim\Factory\AppFactory; use Slim\Routing\RouteCollectorProxy; use TorstenHettstedt\TimekeepingApi\Controller\WorkingHoursController; @@ -50,6 +53,40 @@ $app->group('/working-hours', function (RouteCollectorProxy $group) { }); }); -$app->addErrorMiddleware(true, true, true); + +// Define Custom Error Handler +$customErrorHandler = function ( + ServerRequestInterface $request, + Throwable $exception, + bool $displayErrorDetails, + bool $logErrors, + bool $logErrorDetails, + ?LoggerInterface $logger = null +) use ($app) { + if ($logger !== null && $logErrors === true) { + $logger->error($exception->getMessage()); + } + $payload = [ + 'timestamp' => date('Y-m-d\TH:m:sP'), + 'status' => $exception->getCode(), + "error" => '', + 'message' => $exception->getMessage(), + 'path' => $exception->getFile() + ]; + + if ($exception instanceof HttpException) { + $payload['error'] = $exception->getTitle(); + } + + $response = $app->getResponseFactory()->createResponse($exception->getCode()); + $response->getBody()->write( + json_encode($payload, JSON_UNESCAPED_UNICODE) + ); + + return $response; +}; + +$errorMiddleware = $app->addErrorMiddleware(true, true, true); +$errorMiddleware->setDefaultErrorHandler($customErrorHandler); $app->run(); \ No newline at end of file