diff --git a/src/Bootstrap.php b/src/Bootstrap.php index 46aefda..51ce6fa 100644 --- a/src/Bootstrap.php +++ b/src/Bootstrap.php @@ -101,10 +101,12 @@ final class Bootstrap // Middleware de parsing du body $this->app->addBodyParsingMiddleware(); - // Twig et extension CSRF + // Twig et extensions $twig = $this->container->get('twig'); $csrfExtension = $this->container->get('csrfExtension'); + $sessionExtension = $this->container->get('sessionExtension'); $twig->addExtension($csrfExtension); + $twig->addExtension($sessionExtension); $this->app->add(TwigMiddleware::create($this->app, $twig)); // CSRF Guard diff --git a/src/Container.php b/src/Container.php index 4ee1c7a..19c2d21 100644 --- a/src/Container.php +++ b/src/Container.php @@ -17,6 +17,7 @@ use App\Repositories\UserRepository; use App\Services\HtmlSanitizer; use App\Services\HtmlPurifierFactory; use App\Services\CsrfExtension; +use App\Services\SessionExtension; use App\Services\AuthService; use App\Middleware\AuthMiddleware; use App\Database\Migrator; @@ -113,6 +114,14 @@ final class Container implements ContainerInterface return new CsrfExtension($csrf); }; + // ============================================ + // Session Extension pour Twig + // ============================================ + + $this->factories['sessionExtension'] = function (): SessionExtension { + return new SessionExtension(); + }; + // ============================================ // HTML Purifier // ============================================ diff --git a/src/Services/SessionExtension.php b/src/Services/SessionExtension.php new file mode 100644 index 0000000..6243d86 --- /dev/null +++ b/src/Services/SessionExtension.php @@ -0,0 +1,21 @@ + $_SESSION, + ]; + } +} diff --git a/views/layout.twig b/views/layout.twig index bef48a4..8578c8a 100644 --- a/views/layout.twig +++ b/views/layout.twig @@ -60,7 +60,7 @@
{# Header commun #} - {% include 'partials/_header.twig' with {'session': _SESSION} %} + {% include 'partials/_header.twig' %} {# Zone principale – chaque page injecte son contenu #}