false, 'error' => 'Méthode non autorisée']); exit; } $data = json_decode(file_get_contents('php://input'), true); $identifiant = isset($data['identifiant']) ? trim((string) $data['identifiant']) : ''; $motdepasse = isset($data['motdepasse']) ? (string) $data['motdepasse'] : ''; if ($identifiant === '' || $motdepasse === '') { http_response_code(400); echo json_encode(['success' => false, 'error' => 'Identifiant et mot de passe sont obligatoires.']); exit; } try { $pdo = getDbConnection(); } catch (PDOException $e) { http_response_code(500); echo json_encode(['success' => false, 'error' => 'Connexion base de données impossible']); exit; } // USR_Code est un code court (3 caractères) conventionnellement saisi en // majuscules ; comparaison insensible à la casse sur l'identifiant, comme // dans le prototype front (voir ASPIC_ecran_identification.html, // trouverUtilisateurDemo). Le mot de passe, lui, reste comparé strictement // (sensible à la casse). $stmt = $pdo->prepare('SELECT USR_Code, USR_Nom, USR_MDP FROM ASP_Users WHERE UPPER(USR_Code) = UPPER(?)'); $stmt->execute([$identifiant]); $user = $stmt->fetch(); // hash_equals() plutôt que === : comparaison en temps constant, pour ne pas // laisser une attaque par mesure de timing déduire des informations sur le // mot de passe stocké. Mot de passe en clair (USR_MDP) assumé consciemment // pour cette application interne (voir journal section 2) — cette précaution // est un geste peu coûteux, pas une garantie de sécurité forte sur ce point. if (!$user || !hash_equals($user['USR_MDP'], $motdepasse)) { // Message volontairement générique : ne pas révéler si c'est l'identifiant // ou le mot de passe qui est en cause. Le compteur d'essais / la sortie au // 3e échec sont gérés côté front, pas ici (voir en-tête de ce fichier). echo json_encode(['success' => false]); exit; } // Session ouverte : les endpoints suivants (contacts.php, professions.php, // statuts.php, realisations.php) exigent désormais $_SESSION['USR_Code'] // (voir journal, section 15). $_SESSION['USR_Code'] = $user['USR_Code']; echo json_encode([ 'success' => true, 'user' => [ 'USR_Code' => $user['USR_Code'], 'USR_Nom' => $user['USR_Nom'], ], ]);