lean/meta/definitions/routes.php

103 lines
3.1 KiB
PHP
Raw Normal View History

<?php
use function DI\autowire, DI\create, DI\get;
use League\Route\Strategy\ApplicationStrategy,
League\Route\Http\Exception\NotFoundException,
League\Route\Router;
use Psr\Http\Message\ResponseFactoryInterface,
Psr\Container\ContainerInterface,
Psr\Http\Message\ResponseInterface,
Psr\Http\Message\ServerRequestInterface,
Psr\Http\Server\MiddlewareInterface,
2023-01-26 13:28:36 +00:00
Psr\Http\Server\RequestHandlerInterface,
Psr\SimpleCache\CacheInterface;
use TheBugs\JavascriptMiddleware;
use Cronard\CronardMiddleware;
use Tuupola\Middleware\HttpBasicAuthentication;
use Notes\Route\RouteFetcher;
2023-01-26 13:28:36 +00:00
use Notes\Breadcrumb\Breadcrumb;
use Ulmus\User\Lib\Authenticate;
use Storage\SessionMiddleware;
return [
Lean\Routing::class => autowire(Lean\Routing::class),
RouteFetcher::class => function($c) {
2023-01-26 18:48:49 +00:00
$fetcher = new RouteFetcher(null, [], null, $c->get('routes.caching'));
$fetcher->setFolderList(array_map(function($item) {
return $item;
}, $c->get(Lean\Lean::class)->getRoutable()));
return $fetcher;
},
2023-01-26 13:28:36 +00:00
Breadcrumb::class => function($c) {
2023-01-26 18:48:49 +00:00
$breadcrumb = new Breadcrumb(null, [], null, $c->get('breadcrumbs.caching'));
2023-01-26 13:28:36 +00:00
$breadcrumb->setFolderList(array_map(function($item) {
return $item;
}, $c->get(Lean\Lean::class)->getRoutable()));
return $breadcrumb;
},
ApplicationStrategy::class => function($c) {
return new class($c->get(Picea\Picea::class)) extends ApplicationStrategy {
public Picea\Picea $picea;
public function __construct(Picea\Picea $picea) {
$this->picea = $picea;
}
public function getNotFoundDecorator(NotFoundException $exception): MiddlewareInterface
{
return new class($this->picea) implements MiddlewareInterface {
protected Picea\Picea $picea;
public function __construct(Picea\Picea $picea) {
$this->picea = $picea;
}
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
{
2023-02-01 18:49:45 +00:00
return new Laminas\Diactoros\Response\HtmlResponse($this->picea->renderHtml("lean/error/404", [], $this), 404);
}
};
}
};
},
'routes.middlewares' => [ "dump", "errorHandler", SessionMiddleware::class, CronardMiddleware::class, Mcnd\Event\EventMiddleware::class, HttpBasicAuthentication::class ],
'routes.list' => function($c) {
return function (ContainerInterface $container) {
$router = $container->get(Router::class);
2023-01-26 18:48:49 +00:00
foreach($container->get('routes.middlewares') as $i => $middleware) {
if ( $container->has($middleware) ) {
$router->middleware($container->get($middleware));
}
}
$routing = $container->get(Lean\Routing::class);
$routing->registerRoute($container, getenv('URL_BASE'));
return $router;
};
},
];