add error handlers
This commit is contained in:
@@ -10,6 +10,8 @@ use Hpz937\Phpvault\Database;
|
|||||||
use Hpz937\Phpvault\Middleware\AuthMiddleware;
|
use Hpz937\Phpvault\Middleware\AuthMiddleware;
|
||||||
use Hpz937\Phpvault\Vault;
|
use Hpz937\Phpvault\Vault;
|
||||||
use Psr\Container\ContainerInterface;
|
use Psr\Container\ContainerInterface;
|
||||||
|
use Hpz937\Phpvault\Handler\HtmlErrorRenderer;
|
||||||
|
use Hpz937\Phpvault\Handler\JsonErrorRenderer;
|
||||||
|
|
||||||
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__ . '/..');
|
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__ . '/..');
|
||||||
$dotenv->load();
|
$dotenv->load();
|
||||||
@@ -189,4 +191,12 @@ $app->post('/vault/{vaultName}', function ($request, $response, array $args) use
|
|||||||
}
|
}
|
||||||
})->add($authMiddleware);
|
})->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();
|
$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