Initial commit
All checks were successful
PHP Composer / build (push) Successful in 10m28s

This commit is contained in:
Armel van Ravels
2024-08-30 20:29:39 +02:00
commit bb1d280731
38 changed files with 7226 additions and 0 deletions

61
config/di.php Normal file
View 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
),
];