Working state but no uploads
This commit is contained in:
@@ -4,7 +4,8 @@ declare(strict_types=1);
|
||||
namespace App\Shared;
|
||||
|
||||
use App\Post\PostExtension;
|
||||
use App\Shared\Database\Provisioner;
|
||||
use App\Shared\Database\DatabaseNotProvisionedException;
|
||||
use App\Shared\Database\DatabaseReadiness;
|
||||
use App\Shared\Extension\AppExtension;
|
||||
use App\Shared\Extension\CsrfExtension;
|
||||
use App\Shared\Extension\SessionExtension;
|
||||
@@ -14,6 +15,7 @@ use PDO;
|
||||
use Psr\Container\ContainerInterface;
|
||||
use Psr\Http\Message\ResponseInterface;
|
||||
use Psr\Http\Message\ServerRequestInterface;
|
||||
use Psr\Http\Server\RequestHandlerInterface;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use Slim\App;
|
||||
use Slim\Csrf\Guard;
|
||||
@@ -40,7 +42,6 @@ final class Bootstrap
|
||||
public function initialize(): App
|
||||
{
|
||||
$this->initializeInfrastructure();
|
||||
$this->runAutoProvisioningIfEnabled();
|
||||
|
||||
return $this->createHttpApp();
|
||||
}
|
||||
@@ -138,21 +139,6 @@ final class Bootstrap
|
||||
}
|
||||
}
|
||||
|
||||
private function runAutoProvisioningIfEnabled(): void
|
||||
{
|
||||
$flag = strtolower(trim((string) ($_ENV['APP_AUTO_PROVISION'] ?? '')));
|
||||
$isDev = strtolower($_ENV['APP_ENV'] ?? 'production') === 'development';
|
||||
$enabled = $flag !== ''
|
||||
? in_array($flag, ['1', 'true', 'yes', 'on'], true)
|
||||
: $isDev;
|
||||
|
||||
if (!$enabled) {
|
||||
return;
|
||||
}
|
||||
|
||||
Provisioner::run($this->container->get(PDO::class));
|
||||
}
|
||||
|
||||
private function registerMiddlewares(): void
|
||||
{
|
||||
$this->app->addBodyParsingMiddleware();
|
||||
@@ -168,6 +154,17 @@ final class Bootstrap
|
||||
$guard->setPersistentTokenMode(true);
|
||||
$twig->addExtension(new CsrfExtension($guard));
|
||||
$this->app->add($guard);
|
||||
|
||||
$container = $this->container;
|
||||
|
||||
$this->app->add(function (
|
||||
ServerRequestInterface $request,
|
||||
RequestHandlerInterface $handler,
|
||||
) use ($container): ResponseInterface {
|
||||
DatabaseReadiness::assertProvisioned($container->get(PDO::class));
|
||||
|
||||
return $handler->handle($request);
|
||||
});
|
||||
}
|
||||
|
||||
private function registerRoutes(): void
|
||||
@@ -180,6 +177,8 @@ final class Bootstrap
|
||||
$isDev = strtolower($_ENV['APP_ENV'] ?? 'production') === 'development';
|
||||
$logger = $this->container->get(LoggerInterface::class);
|
||||
$errorHandler = $this->app->addErrorMiddleware($isDev, true, true, $logger);
|
||||
$app = $this->app;
|
||||
$container = $this->container;
|
||||
|
||||
$errorHandler->setDefaultErrorHandler(
|
||||
function (
|
||||
@@ -188,24 +187,30 @@ final class Bootstrap
|
||||
bool $displayErrorDetails,
|
||||
bool $logErrors,
|
||||
bool $logErrorDetails,
|
||||
) use ($isDev): ResponseInterface {
|
||||
if ($isDev) {
|
||||
) use ($isDev, $app, $container): ResponseInterface {
|
||||
if ($isDev && !$exception instanceof DatabaseNotProvisionedException) {
|
||||
throw $exception;
|
||||
}
|
||||
|
||||
$statusCode = 500;
|
||||
if ($exception instanceof HttpException) {
|
||||
$message = 'Une erreur inattendue s\'est produite.';
|
||||
|
||||
if ($exception instanceof DatabaseNotProvisionedException) {
|
||||
$statusCode = 503;
|
||||
$message = $exception->getMessage();
|
||||
} elseif ($exception instanceof HttpException) {
|
||||
$statusCode = $exception->getCode() ?: 500;
|
||||
$message = $statusCode === 404
|
||||
? 'La page demandée est introuvable.'
|
||||
: $message;
|
||||
}
|
||||
|
||||
$response = $this->app->getResponseFactory()->createResponse($statusCode);
|
||||
$twig = $this->container->get(Twig::class);
|
||||
$response = $app->getResponseFactory()->createResponse($statusCode);
|
||||
$twig = $container->get(Twig::class);
|
||||
|
||||
return $twig->render($response, 'pages/error.twig', [
|
||||
'status' => $statusCode,
|
||||
'message' => $statusCode === 404
|
||||
? 'La page demandée est introuvable.'
|
||||
: 'Une erreur inattendue s\'est produite.',
|
||||
'message' => $message,
|
||||
]);
|
||||
}
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user