<?php
/**
 * Script de diagnostic pour l'authentification
 * À uploader sur le serveur et accéder via: https://api.transub.dz/apiggr/debug_auth.php?user=VOTRE_CODE
 * ⚠️ SUPPRIMER APRÈS UTILISATION
 */

header("Content-Type: text/html; charset=UTF-8");
echo "<h2>Diagnostic Authentification GGR</h2>";

require_once __DIR__ . '/config/database.php';

try {
    $db = \Database::getInstance();
    echo "<p style='color:green'>✅ Connexion DB réussie</p>";

    // 1. Vérifier la table Utilisateurs
    $user = $_GET['user'] ?? '';
    if (empty($user)) {
        echo "<p>Usage: debug_auth.php?user=CODE_UTILISATEUR</p>";
        
        // Afficher les utilisateurs existants (sans mots de passe)
        $stmt = $db->query("SELECT code_utilisateur, NomPrenom, statut, role, SiteID FROM Utilisateurs LIMIT 20");
        $users = $stmt->fetchAll();
        echo "<h3>Utilisateurs dans la base:</h3>";
        echo "<table border='1' cellpadding='5'>";
        echo "<tr><th>code_utilisateur</th><th>NomPrenom</th><th>statut</th><th>role</th><th>SiteID</th></tr>";
        foreach ($users as $u) {
            echo "<tr>";
            echo "<td>" . htmlspecialchars($u['code_utilisateur']) . "</td>";
            echo "<td>" . htmlspecialchars($u['NomPrenom'] ?? '') . "</td>";
            echo "<td>" . htmlspecialchars($u['statut'] ?? '') . "</td>";
            echo "<td>" . htmlspecialchars($u['role'] ?? '') . "</td>";
            echo "<td>" . htmlspecialchars($u['SiteID'] ?? '') . "</td>";
            echo "</tr>";
        }
        echo "</table>";
        exit;
    }

    // 2. Recherche exacte (comme l'API)
    echo "<h3>Recherche pour: " . htmlspecialchars($user) . "</h3>";
    
    $stmt = $db->prepare("SELECT * FROM Utilisateurs WHERE code_utilisateur = ? LIMIT 1");
    $stmt->execute([$user]);
    $row = $stmt->fetch();
    
    if ($row) {
        echo "<p style='color:green'>✅ Utilisateur trouvé (sans filtre statut)</p>";
        echo "<p><b>code_utilisateur:</b> [" . htmlspecialchars($row['code_utilisateur']) . "]</p>";
        echo "<p><b>statut:</b> [" . htmlspecialchars($row['statut'] ?? 'NULL') . "]</p>";
        echo "<p><b>role:</b> [" . htmlspecialchars($row['role'] ?? 'NULL') . "]</p>";
        echo "<p><b>SiteID:</b> [" . htmlspecialchars($row['SiteID'] ?? 'NULL') . "]</p>";
        echo "<p><b>mot_de_passe (longueur):</b> " . strlen($row['mot_de_passe'] ?? '') . " caractères</p>";
        echo "<p><b>mot_de_passe (premier char ASCII):</b> " . (isset($row['mot_de_passe'][0]) ? ord($row['mot_de_passe'][0]) : 'N/A') . "</p>";
        
        // Vérifier le statut ACTIF
        if (($row['statut'] ?? '') === 'ACTIF') {
            echo "<p style='color:green'>✅ statut === 'ACTIF' (match exact)</p>";
        } else {
            echo "<p style='color:red'>❌ statut !== 'ACTIF' → valeur: [" . htmlspecialchars($row['statut'] ?? 'NULL') . "]</p>";
            echo "<p style='color:red'>→ C'EST LE PROBLÈME ! Le filtre AND statut = 'ACTIF' ne trouve pas cet utilisateur.</p>";
        }
        
        // Vérifier les caractères cachés dans code_utilisateur
        $hex = bin2hex($row['code_utilisateur']);
        echo "<p><b>code_utilisateur (hex):</b> $hex</p>";
        $hexUser = bin2hex($user);
        echo "<p><b>Paramètre user (hex):</b> $hexUser</p>";
        
    } else {
        echo "<p style='color:red'>❌ Utilisateur NON trouvé (même sans filtre statut)</p>";
        
        // Recherche insensible à la casse
        $stmt2 = $db->prepare("SELECT code_utilisateur, statut FROM Utilisateurs WHERE LOWER(code_utilisateur) = LOWER(?) LIMIT 5");
        $stmt2->execute([$user]);
        $rows2 = $stmt2->fetchAll();
        if ($rows2) {
            echo "<p style='color:orange'>⚠️ Trouvé avec recherche insensible à la casse:</p>";
            foreach ($rows2 as $r) {
                echo "<p>→ [" . htmlspecialchars($r['code_utilisateur']) . "] statut=[" . htmlspecialchars($r['statut'] ?? '') . "]</p>";
            }
        } else {
            echo "<p style='color:red'>❌ Aucun résultat même en casse insensible</p>";
        }
    }

    // 3. Test avec filtre statut (comme User.php)
    $stmt3 = $db->prepare("SELECT * FROM Utilisateurs WHERE code_utilisateur = ? AND statut = 'ACTIF' LIMIT 1");
    $stmt3->execute([$user]);
    $row3 = $stmt3->fetch();
    
    if ($row3) {
        echo "<p style='color:green'>✅ Trouvé avec filtre AND statut = 'ACTIF'</p>";
    } else {
        echo "<p style='color:red'>❌ NON trouvé avec AND statut = 'ACTIF' → C'est le filtre qui bloque!</p>";
    }

} catch (Exception $e) {
    echo "<p style='color:red'>❌ Erreur: " . htmlspecialchars($e->getMessage()) . "</p>";
}
?>
