Actualiser api.php
This commit is contained in:
@@ -27,10 +27,42 @@ try {
|
||||
} catch (PDOException $e) { die(json_encode(["error" => "Connexion BDD échouée"])); }
|
||||
|
||||
// --- Fonctions Utilitaires ---
|
||||
// Récupère le token d'authentification envoyé par le client, en tolérant les
|
||||
// configurations Apache/WAMP qui ne transmettent pas HTTP_AUTHORIZATION à PHP
|
||||
// par défaut (l'en-tête est bien envoyé par le navigateur, mais Apache le
|
||||
// "mange" avant qu'il n'atteigne $_SERVER, sauf si CGIPassAuth est activé).
|
||||
function getAuthToken() {
|
||||
if (!empty($_SERVER['HTTP_AUTHORIZATION'])) {
|
||||
return $_SERVER['HTTP_AUTHORIZATION'];
|
||||
}
|
||||
// Cas fréquent avec RewriteRule / certains proxys : le header est déplacé ici
|
||||
if (!empty($_SERVER['REDIRECT_HTTP_AUTHORIZATION'])) {
|
||||
return $_SERVER['REDIRECT_HTTP_AUTHORIZATION'];
|
||||
}
|
||||
// Filet de sécurité générique : relire les en-têtes bruts de la requête
|
||||
if (function_exists('getallheaders')) {
|
||||
foreach (getallheaders() as $name => $value) {
|
||||
if (strcasecmp($name, 'Authorization') === 0) {
|
||||
return $value;
|
||||
}
|
||||
}
|
||||
} elseif (function_exists('apache_request_headers')) {
|
||||
foreach (apache_request_headers() as $name => $value) {
|
||||
if (strcasecmp($name, 'Authorization') === 0) {
|
||||
return $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
function checkAuth($pdo) {
|
||||
if ($pdo->query("SELECT COUNT(*) FROM users")->fetchColumn() == 0) return true;
|
||||
$token = $_SERVER['HTTP_AUTHORIZATION'] ?? '';
|
||||
if ($token !== md5(ENCRYPTION_KEY . 'session')) { http_response_code(403); exit; }
|
||||
$token = getAuthToken();
|
||||
if ($token !== md5(ENCRYPTION_KEY . 'session')) {
|
||||
error_log("Auth: ❌ Token invalide ou absent (HTTP_AUTHORIZATION reçu: " . (empty($token) ? "VIDE — vérifier CGIPassAuth/config Apache" : "présent mais différent") . ")");
|
||||
http_response_code(403); exit;
|
||||
}
|
||||
}
|
||||
|
||||
function encryptData($data) {
|
||||
|
||||
Reference in New Issue
Block a user