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 // Middleware de parsing du body
$this->app->addBodyParsingMiddleware(); $this->app->addBodyParsingMiddleware();
// Twig et extension CSRF // Twig et extensions
$twig = $this->container->get('twig'); $twig = $this->container->get('twig');
$csrfExtension = $this->container->get('csrfExtension'); $csrfExtension = $this->container->get('csrfExtension');
$sessionExtension = $this->container->get('sessionExtension');
$twig->addExtension($csrfExtension); $twig->addExtension($csrfExtension);
$twig->addExtension($sessionExtension);
$this->app->add(TwigMiddleware::create($this->app, $twig)); $this->app->add(TwigMiddleware::create($this->app, $twig));
// CSRF Guard // CSRF Guard

View File

@@ -17,6 +17,7 @@ use App\Repositories\UserRepository;
use App\Services\HtmlSanitizer; use App\Services\HtmlSanitizer;
use App\Services\HtmlPurifierFactory; use App\Services\HtmlPurifierFactory;
use App\Services\CsrfExtension; use App\Services\CsrfExtension;
use App\Services\SessionExtension;
use App\Services\AuthService; use App\Services\AuthService;
use App\Middleware\AuthMiddleware; use App\Middleware\AuthMiddleware;
use App\Database\Migrator; use App\Database\Migrator;
@@ -113,6 +114,14 @@ final class Container implements ContainerInterface
return new CsrfExtension($csrf); return new CsrfExtension($csrf);
}; };
// ============================================
// Session Extension pour Twig
// ============================================
$this->factories['sessionExtension'] = function (): SessionExtension {
return new SessionExtension();
};
// ============================================ // ============================================
// HTML Purifier // 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> <body>
{# Header commun #} {# Header commun #}
{% include 'partials/_header.twig' with {'session': _SESSION} %} {% include 'partials/_header.twig' %}
{# Zone principale chaque page injecte son contenu #} {# Zone principale chaque page injecte son contenu #}
<main> <main>