From f27cca08ff786ceff1870147f6d6bad14d71117f Mon Sep 17 00:00:00 2001 From: polo Date: Fri, 23 Oct 2026 00:47:32 +0200 Subject: =?UTF-8?q?dossiers=20avec=20majuscule,=20namespace=20pour=20toute?= =?UTF-8?q?s=20les=20classes,=20autoload=20psr-4,=20UserDataService::creat?= =?UTF-8?q?eZip=20d=C3=A9plac=C3=A9=20dans=20Backup?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Service/session.php | 94 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 src/Service/session.php (limited to 'src/Service/session.php') diff --git a/src/Service/session.php b/src/Service/session.php new file mode 100644 index 0000000..39c6ba2 --- /dev/null +++ b/src/Service/session.php @@ -0,0 +1,94 @@ + 'session_invalide'])); + die; + } + + // MAJ de la session avec CERTAINES données + $_SESSION['user']['username'] = $user->getLogin(); + $_SESSION['user']['role'] = $user->getRole(); + + $is_admin = $user->getRole() === 'admin'; + } + + define('IS_ADMIN', $is_admin); + + // si on a un jour besoin d'une variable globale au lieu d'une constante + //$GLOBALS['is_admin'] = $is_admin; // version modifiable 1 + /*function isAdmin(): bool { // version modifiable 2 + return $_SESSION['user']['role'] ?? null === 'admin'; + }*/ + + + // => système de cache à ajouter pour ne pas lire la BDD à chaque fois + //remplacer ce qui est en haut + /*$user = $_SESSION['user'] ?? null; + if (!$user) { + // visiteur + } + // Vérification périodique (ex: toutes les 5 minutes) + if (time() - $user['last_check'] > 300) { + $user = UserController::getUserById($user['id'], $entityManager); + if (!$user) { + session_destroy(); + header('Location: /login.php'); + exit; + } + // cache pour ne pas avoir à lire la BDD à chaque page + $_SESSION['user'] = [ + 'id' => $user['id'], + 'role' => $user['role'], + 'username' => $user['username'], + 'last_check' => time() + ]; + $user = $_SESSION['user']; + } + $is_admin = ($user['role'] === 'admin');*/ + + + // améliorations possibles: ajouter expiration automatique + protection contre vol de session (IP / user-agent) sans casser ton app. +} + +// nettoyage complet +/*function cleanSession(){ + unset($_SESSION['user']); // mémoire vive + session_destroy(); // fichier côté serveur + setcookie('PHPSESSID', '', time() - 86400, '/'); // cookie de session +}*/ \ No newline at end of file -- cgit v1.2.3