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 @@
+