diff --git a/api/src/Controllers/UserController.php b/api/src/Controllers/UserController.php index 095e30db..bc5da00f 100755 --- a/api/src/Controllers/UserController.php +++ b/api/src/Controllers/UserController.php @@ -503,6 +503,50 @@ class UserController { ]); $userId = $this->db->lastInsertId(); + // Récupérer l'opération active courante de l'admin créateur + $stmtActiveOpe = $this->db->prepare(' + SELECT fk_operation + FROM users + WHERE id = ? AND chk_active = 1 + '); + $stmtActiveOpe->execute([$currentUserId]); + $activeOpeData = $stmtActiveOpe->fetch(PDO::FETCH_ASSOC); + $activeOperationId = $activeOpeData ? (int)$activeOpeData['fk_operation'] : null; + + $opeUserId = null; + + // Si une opération active existe, créer automatiquement l'entrée ope_users + if ($activeOperationId) { + $stmtOpeUser = $this->db->prepare(' + INSERT INTO ope_users (fk_operation, fk_user, fk_role, first_name, encrypted_name, sect_name, fk_user_creat, chk_active) + VALUES (?, ?, ?, ?, ?, ?, ?, 1) + '); + $stmtOpeUser->execute([ + $activeOperationId, + $userId, + $role, + $firstName, + $encryptedName, + $sectName, + $currentUserId + ]); + $opeUserId = (int)$this->db->lastInsertId(); + + LogService::log('Membre automatiquement affecté à l\'opération active', [ + 'level' => 'info', + 'userId' => $userId, + 'opeUserId' => $opeUserId, + 'activeOperationId' => $activeOperationId, + 'createdBy' => $currentUserId + ]); + } else { + LogService::log('Membre créé sans opération active - pas d\'entrée ope_users', [ + 'level' => 'warning', + 'userId' => $userId, + 'createdBy' => $currentUserId + ]); + } + // Envoi des emails séparés pour plus de sécurité (seulement si un email est fourni) if (!empty($email)) { // 1er email : Envoyer l'identifiant (username) @@ -545,6 +589,7 @@ class UserController { 'status' => 'success', 'message' => 'Utilisateur créé avec succès', 'id' => $userId, + 'ope_user_id' => $opeUserId, // Peut être null si pas d'opération active 'username' => $username ];