add error handlers
This commit is contained in:
@@ -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();
|
||||
|
||||
16
src/Handler/HtmlErrorRenderer.php
Normal file
16
src/Handler/HtmlErrorRenderer.php
Normal 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>';
|
||||
}
|
||||
}
|
||||
|
||||
18
src/Handler/JsonErrorRenderer.php
Normal file
18
src/Handler/JsonErrorRenderer.php
Normal 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',
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user