This commit is contained in:
61
config/di.php
Normal file
61
config/di.php
Normal file
@@ -0,0 +1,61 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use App\Core\EnvironmentLoader;
|
||||
use App\Enums\Environment;
|
||||
use App\Http\Middleware\CspMiddleware;
|
||||
use App\Http\Middleware\HstsMiddleware;
|
||||
use App\Http\Middleware\StartSessionMiddleware;
|
||||
use App\Http\Routes;
|
||||
use App\Security\Csp\CspPolicy;
|
||||
use App\Security\Csp\Directives\DefaultSrc;
|
||||
use App\Security\Csp\Directives\ImgSrc;
|
||||
use App\Security\Csp\Directives\ScriptSrc;
|
||||
use App\Security\Csp\Directives\StyleSrc;
|
||||
use App\Security\Hst\Config as HstConfig;
|
||||
use Laminas\Diactoros\ServerRequest;
|
||||
use Laminas\Diactoros\ServerRequestFactory;
|
||||
use League\Plates\Engine;
|
||||
use League\Route\Router;
|
||||
use League\Route\Strategy\ApplicationStrategy;
|
||||
use Psr\Container\ContainerInterface;
|
||||
|
||||
return [
|
||||
Environment::class => static fn (): Environment => Environment::from($_ENV['ENVIRONMENT']),
|
||||
ServerRequest::class => static fn (): ServerRequest => ServerRequestFactory::fromGlobals($_SERVER, $_GET, $_POST, $_COOKIE, $_FILES),
|
||||
Engine::class => static fn (): Engine => new Engine(dirname(__DIR__).'/resources/views'),
|
||||
EnvironmentLoader::class => static fn () => new EnvironmentLoader(dirname(__DIR__)),
|
||||
'middlewares' => static fn () => [
|
||||
StartSessionMiddleware::class,
|
||||
CspMiddleware::class,
|
||||
HstsMiddleware::class,
|
||||
],
|
||||
Router::class => static function (ContainerInterface $container): Router {
|
||||
$strategy = new ApplicationStrategy();
|
||||
$strategy->setContainer($container);
|
||||
|
||||
$router = new Router();
|
||||
$router->setStrategy($strategy);
|
||||
|
||||
$router->lazyMiddlewares($container->get('middlewares'));
|
||||
|
||||
Routes::routes($router);
|
||||
|
||||
return $router;
|
||||
},
|
||||
CspPolicy::class => static fn (ContainerInterface $container): CspPolicy => (new CspPolicy())
|
||||
->addDirective($container->get(DefaultSrc::class))
|
||||
->addDirective($container->get(ImgSrc::class))
|
||||
->addDirective($container->get(ScriptSrc::class))
|
||||
->addDirective($container->get(StyleSrc::class)),
|
||||
DefaultSrc::class => static fn (): DefaultSrc => (new DefaultSrc())->addSource("'self'"),
|
||||
ImgSrc::class => static fn (): ImgSrc => (new ImgSrc())->addSource("'self'"),
|
||||
ScriptSrc::class => static fn (): ScriptSrc => (new ScriptSrc())->addSource("'self'"),
|
||||
StyleSrc::class => static fn (): StyleSrc => (new StyleSrc())->addSource("'self'"),
|
||||
HstConfig::class => static fn (): HstConfig => new HstConfig(
|
||||
maxAge: 31536000,
|
||||
includeSubdomains: true,
|
||||
preload: true
|
||||
),
|
||||
];
|
||||
Reference in New Issue
Block a user