diff --git a/meta/definitions/authorize.php b/meta/definitions/authorize.php index cb2a1df..dbaa885 100644 --- a/meta/definitions/authorize.php +++ b/meta/definitions/authorize.php @@ -1,10 +1,12 @@ create(Authenticate::class)->constructor(get(Entity\UserInterface::class), get(Session::class), get(Cookie::class), get('authentication.method')), - Authorize::class => create(Authorize::class)->constructor(get(Entity\UserInterface::class), get(Session::class), get(Cookie::class), get('authentication.method')), - HeaderAuthenticationMiddleware::class => create(HeaderAuthenticationMiddleware::class)->constructor(get(Authorize::class), get(Entity\UserInterface::class), get('authorize.error')), + Authenticate::class => create(Authenticate::class)->constructor(get(Entity\UserInterface::class), get(Session::class), get(Cookie::class), get('authentication.method')), - PostRequestAuthentication::class => create(PostRequestAuthentication::class)->constructor(get(Authenticate::class), "email", "email", "password"), + AuthenticationMiddleware::class => create(AuthenticationMiddleware::class)->constructor(get(Authorize::class), get('authorize.error')), - PostRequestAuthenticationMiddleware::class => create(PostRequestAuthenticationMiddleware::class)->constructor(get(Entity\UserInterface::class), get('authentication.error'), get(PostRequestAuthentication::class)), + HeaderAuthentication::class => autowire(HeaderAuthentication::class), + + HeaderAuthenticationMiddleware::class => create(HeaderAuthenticationMiddleware::class)->constructor(get(HeaderAuthentication::class)), + + PostRequestAuthentication::class => create(PostRequestAuthentication::class)->constructor("email", "email", "password"), + + PostRequestAuthenticationMiddleware::class => create(PostRequestAuthenticationMiddleware::class)->constructor(get(PostRequestAuthentication::class)), 'authentication.method' => null, - 'authorize.error' => function($c) { - return function(array $errorData) { - return HttpFactory::createJsonResponse($errorData + [ + 'authorize.error' => function(ContainerInterface $c) { + return function(array $errorData) use ($c) { + return $c->get(HttpFactoryInterface::class)::createJsonResponse($errorData + [ 'api.error' => "Authorization failed", 'api.datetime' => (new \DateTime)->format(\DateTime::ISO8601), ], 403); @@ -38,8 +45,8 @@ return [ }, 'authentication.error' => function($c, Picea $picea) { - return function($message) use ($picea) { - return HttpFactory::createHtmlResponse($picea->renderHtml('lean/error/500', [ + return function($message) use ($c, $picea) { + return $c->get(HttpFactoryInterface::class)::createHtmlResponse($picea->renderHtml('lean/error/500', [ 'title' => "Authentication failed", 'subtitle' => "", 'message' => $message, diff --git a/meta/definitions/http.php b/meta/definitions/http.php index 9c6db73..74a5ff1 100644 --- a/meta/definitions/http.php +++ b/meta/definitions/http.php @@ -1,10 +1,12 @@ function ($c) { @@ -14,4 +16,18 @@ return [ }, EmitterInterface::class => create(SapiEmitter::class), + + HttpFactoryInterface::class => create(HttpFactory::class), + + 'error.401' => function(ContainerInterface $c, Picea $picea) { + return $c->get(HttpFactoryInterface::class)::createHtmlResponse($picea->renderHtml("lean/error/401", []), 401); + }, + + 'error.404' => function(ContainerInterface $c, Picea $picea) { + return $c->get(HttpFactoryInterface::class)::createHtmlResponse($picea->renderHtml("lean/error/404", []), 404); + }, + + 'error.500' => function(ContainerInterface $c, Picea $picea) { + return $c->get(HttpFactoryInterface::class)::createHtmlResponse($picea->renderHtml("lean/error/500", []), 500); + } ]; diff --git a/skeleton/lean b/skeleton/lean old mode 100755 new mode 100644 diff --git a/skeleton/meta/definitions/auth.php b/skeleton/meta/definitions/auth.php index 0b05eab..0a91ed4 100644 --- a/skeleton/meta/definitions/auth.php +++ b/skeleton/meta/definitions/auth.php @@ -4,6 +4,7 @@ use function DI\autowire, DI\create, DI\get; use %NAMESPACE%\Entity; +use Psr\Container\ContainerInterface; use Psr\Http\Message\ServerRequestInterface; use Ulmus\Entity\Field\Datetime, @@ -21,16 +22,18 @@ use TheBugs\Email\{ EmailConfiguration, MailerInterface, SwiftMailer }; use Taxus\{ Taxus, PermissionGrantInterface }; +use Lean\Factory\HttpFactoryInterface; + return [ \Ulmus\User\Entity\UserInterface::class => autowire(Entity\User::class), - SecurityHandler::class => create(SecurityHandler::class)->constructor(function() { - return Lean\Factory\HttpFactory::createRedirectResponse(getenv("URL_BASE")."/login"); + SecurityHandler::class => create(SecurityHandler::class)->constructor(function(ContainerInterface $c) { + return $c->get(HttpFactoryInterface::class)::createRedirectResponse(getenv("URL_BASE")."/login"); }, get('authentication.unauthorize'), get(Taxus::class)), - 'authentication.unauthorize' => function($c, Picea $picea) { - return function($message) use ($picea) { - return Lean\Factory\HttpFactory::createHtmlResponse($picea->renderHtml('lean/error/401', [ + 'authentication.unauthorize' => function(ContainerInterface $c, Picea $picea) { + return function($message) use ($c, $picea) { + return $c->get(HttpFactoryInterface::class)::createHtmlResponse($picea->renderHtml('lean/error/401', [ 'title' => "", 'subtitle' => "", 'message' => $message, diff --git a/skeleton/meta/definitions/env/prod.php b/skeleton/meta/definitions/env/prod.php index dac8d18..1e50d3f 100644 --- a/skeleton/meta/definitions/env/prod.php +++ b/skeleton/meta/definitions/env/prod.php @@ -4,7 +4,7 @@ use Picea\Picea; use Negundo\Client\{ NegundoMiddleware, SoftwareConfig }; -use Lean\Factory\HttpFactory; +use Lean\Factory\HttpFactoryInterface; use Psr\Http\Server\MiddlewareInterface, Psr\Http\Message\ServerRequestInterface, @@ -31,11 +31,11 @@ return [ "errorHandler" => create(NegundoMiddleware::class)->constructor(get(SoftwareConfig::class), null, get('app.errorhandler.html')), - 'app.errorhandler.html' => function($c, Picea $picea) { - return function(\Throwable $exception) use ($picea) { + 'app.errorhandler.html' => function(\Psr\Container\ContainerInterface $c, Picea $picea) { + return function(\Throwable $exception) use ($c, $picea) { error_log($exception->getMessage()); - return HttpFactory::createHtmlResponse($picea->renderHtml('lean/error/500', [ + return $c->get(HttpFactoryInterface::class)::createHtmlResponse($picea->renderHtml('lean/error/500', [ 'title' => "Une erreur s'est produite lors de l'exécution du script.", 'subtitle' => "Êtes-vous connecté avec le bon compte ?", 'message' => $exception->getMessage(), diff --git a/src/ApplicationStrategy.php b/src/ApplicationStrategy.php index 0cd517a..325ee74 100644 --- a/src/ApplicationStrategy.php +++ b/src/ApplicationStrategy.php @@ -58,7 +58,7 @@ class ApplicationStrategy extends Strategy\ApplicationStrategy { } } - return new \Laminas\Diactoros\Response\HtmlResponse($this->picea->renderHtml("lean/error/404", [], $this), 404); + return $this->di->get('error.404'); } }; } diff --git a/src/Factory/HttpFactory.php b/src/Factory/HttpFactory.php index afd32c6..1ab5214 100644 --- a/src/Factory/HttpFactory.php +++ b/src/Factory/HttpFactory.php @@ -7,7 +7,7 @@ use Lean\Response\{ DownloadResponse, ImageResponse, FileDownloadResponse, PdfRe use Laminas\Diactoros\Response; use Psr\Http\Message\ResponseInterface; -class HttpFactory +class HttpFactory implements HttpFactoryInterface { public static function createResponse(string $url, int $code = 302, array $headers = []) : ResponseInterface { diff --git a/src/Factory/HttpFactoryInterface.php b/src/Factory/HttpFactoryInterface.php new file mode 100644 index 0000000..04f34dc --- /dev/null +++ b/src/Factory/HttpFactoryInterface.php @@ -0,0 +1,19 @@ +bug fixingbug fixing \ No newline at end of file