'Non identifié — veuillez vous connecter.']); exit; } $method = $_SERVER['REQUEST_METHOD']; try { $pdo = getDbConnection(); } catch (PDOException $e) { http_response_code(500); echo json_encode(['error' => 'Connexion base de données impossible']); exit; } // Whitelist des colonnes de préférence modifiables — n'accepter que celles-ci // dans le corps d'un PUT, jamais un nom de colonne arbitraire fourni par le // client (même logique que CHAMPS_EDITABLES dans contacts.php). const CHAMPS_RATIO = ['USR_RatioPanneauContact', 'USR_RatioPanneauProspect']; try { switch ($method) { case 'GET': $stmt = $pdo->prepare( 'SELECT USR_RatioPanneauContact, USR_RatioPanneauProspect FROM ASP_Users WHERE USR_Code = ?' ); $stmt->execute([$_SESSION['USR_Code']]); $ligne = $stmt->fetch(); if (!$ligne) { http_response_code(404); echo json_encode(['error' => 'Utilisateur introuvable']); exit; } echo json_encode([ 'USR_RatioPanneauContact' => (int)$ligne['USR_RatioPanneauContact'], 'USR_RatioPanneauProspect' => (int)$ligne['USR_RatioPanneauProspect'], ]); break; case 'PUT': $data = json_decode(file_get_contents('php://input'), true) ?? []; $assignations = []; $params = []; foreach (CHAMPS_RATIO as $champ) { if (!array_key_exists($champ, $data)) { continue; } $valeur = $data[$champ]; if (!is_numeric($valeur) || (int)$valeur < 0 || (int)$valeur > 100) { http_response_code(400); echo json_encode(['error' => "$champ doit être un entier compris entre 0 et 100"]); exit; } $assignations[] = "$champ = ?"; $params[] = (int)$valeur; } if (!$assignations) { http_response_code(400); echo json_encode(['error' => 'Aucun champ de préférence reconnu à mettre à jour']); exit; } $params[] = $_SESSION['USR_Code']; $sql = 'UPDATE ASP_Users SET ' . implode(', ', $assignations) . ' WHERE USR_Code = ?'; $stmt = $pdo->prepare($sql); $stmt->execute($params); echo json_encode(['success' => true]); break; default: http_response_code(405); echo json_encode(['error' => 'Méthode non autorisée']); } } catch (PDOException $e) { http_response_code(500); echo json_encode(['error' => 'Erreur base de données : ' . $e->getMessage()]); }