login/logout ok

This commit is contained in:
julien
2026-03-09 18:27:28 +01:00
parent a4093d3a3d
commit 31221a0e1f
4 changed files with 34 additions and 2 deletions

View File

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

View File

@@ -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
// ============================================

View File

@@ -0,0 +1,21 @@
<?php
declare(strict_types=1);
namespace App\Services;
use Twig\Extension\AbstractExtension;
use Twig\Extension\GlobalsInterface;
/**
* Extension Twig pour accéder à la session dans les templates.
*/
final class SessionExtension extends AbstractExtension implements GlobalsInterface
{
public function getGlobals(): array
{
return [
'session' => $_SESSION,
];
}
}

View File

@@ -60,7 +60,7 @@
<body>
{# Header commun #}
{% include 'partials/_header.twig' with {'session': _SESSION} %}
{% include 'partials/_header.twig' %}
{# Zone principale chaque page injecte son contenu #}
<main>