From 6fd02079c1034adf67c9f2eb40d13c4dda102706 Mon Sep 17 00:00:00 2001 From: Pierre Date: Mon, 26 Jan 2026 17:06:00 +0100 Subject: [PATCH] feat: Ajouter fallback SQL si operation_id absent de la session MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Si Session::getOperationId() retourne null, requête SQL de fallback - Log de warning pour identifier les cas où la session n'est pas à jour - Utile si l'utilisateur n'a pas fait de login récent - Garantit que l'opération active est toujours récupérée --- api/src/Controllers/UserController.php | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/api/src/Controllers/UserController.php b/api/src/Controllers/UserController.php index 4328f797..5a5a8d2c 100755 --- a/api/src/Controllers/UserController.php +++ b/api/src/Controllers/UserController.php @@ -506,6 +506,26 @@ class UserController { // Récupérer l'opération active depuis la session (déjà récupérée lors du login) $activeOperationId = Session::getOperationId(); + // Fallback: si pas d'operation_id en session, récupérer depuis la base de données + if (!$activeOperationId) { + $stmtActiveOpe = $this->db->prepare(' + SELECT o.id + FROM operations o + INNER JOIN users u ON u.fk_entite = o.fk_entite + WHERE u.id = ? AND o.chk_active = 1 + LIMIT 1 + '); + $stmtActiveOpe->execute([$currentUserId]); + $activeOpeData = $stmtActiveOpe->fetch(PDO::FETCH_ASSOC); + $activeOperationId = $activeOpeData ? (int)$activeOpeData['id'] : null; + + LogService::log('Opération active récupérée depuis la base (pas en session)', [ + 'level' => 'warning', + 'userId' => $currentUserId, + 'activeOperationId' => $activeOperationId + ]); + } + $opeUserId = null; // Si une opération active existe, créer automatiquement l'entrée ope_users