add error handlers

This commit is contained in:
2024-09-24 16:19:47 -05:00
parent 98f9582dad
commit daf8dd16a4
3 changed files with 44 additions and 0 deletions

View File

@@ -10,6 +10,8 @@ use Hpz937\Phpvault\Database;
use Hpz937\Phpvault\Middleware\AuthMiddleware;
use Hpz937\Phpvault\Vault;
use Psr\Container\ContainerInterface;
use Hpz937\Phpvault\Handler\HtmlErrorRenderer;
use Hpz937\Phpvault\Handler\JsonErrorRenderer;
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__ . '/..');
$dotenv->load();
@@ -189,4 +191,12 @@ $app->post('/vault/{vaultName}', function ($request, $response, array $args) use
}
})->add($authMiddleware);
// Add Error Middleware
$errorMiddleware = $app->addErrorMiddleware(true, true, true);
// Get the default error handler and register my custom error renderer.
$errorHandler = $errorMiddleware->getDefaultErrorHandler();
$errorHandler->registerErrorRenderer('text/html', HtmlErrorRenderer::class);
$errorHandler->registerErrorRenderer('application/json', JsonErrorRenderer::class);
$app->run();

View File

@@ -0,0 +1,16 @@
<?php
namespace Hpz937\Phpvault\Handler;
use Slim\Interfaces\ErrorRendererInterface;
use Throwable;
class HtmlErrorRenderer implements ErrorRendererInterface
{
public function __invoke(Throwable $exception, bool $displayErrorDetails): string
{
// Render the HTML error response
return '<html><body><h1>Error</h1><p>' . ($displayErrorDetails ? $exception->getMessage() : 'An error occurred') . '</p></body></html>';
}
}

View File

@@ -0,0 +1,18 @@
<?php
namespace Hpz937\Phpvault\Handler;
use Slim\Interfaces\ErrorRendererInterface;
use Throwable;
class JsonErrorRenderer implements ErrorRendererInterface
{
public function __invoke(Throwable $exception, bool $displayErrorDetails): string
{
// Render the JSON error response
return json_encode([
'error' => true,
'message' => $displayErrorDetails ? $exception->getMessage() : 'An error occurred',
]);
}
}