<?php
/**
 * Test avancé de redirection pour StayManager
 */

// Afficher toutes les erreurs
error_reporting(E_ALL);
ini_set('display_errors', 1);

echo "<h1>Test Avancé de Redirection - StayManager</h1>";

// Test 1: Vérifier la configuration
echo "<h2>1. Configuration</h2>";
require_once __DIR__ . '/config/config.php';

echo "✅ Configuration chargée<br>";
echo "URL de base: " . getBaseUrl() . "<br>";
echo "Session name: " . SESSION_NAME . "<br>";

// Test 2: Vérifier les sessions
echo "<h2>2. Sessions</h2>";

if (session_status() === PHP_SESSION_NONE) {
    session_start();
    echo "✅ Session démarrée<br>";
} else {
    echo "✅ Session déjà active<br>";
}

echo "Session ID: " . session_id() . "<br>";
echo "Session name: " . session_name() . "<br>";

// Test 3: Vérifier l'authentification
echo "<h2>3. Authentification</h2>";

if (isLoggedIn()) {
    echo "✅ Utilisateur connecté<br>";
    echo "ID: " . getCurrentUserId() . "<br>";
    echo "Nom: " . ($_SESSION['user_name'] ?? 'Non défini') . "<br>";
    echo "Rôle: " . getCurrentUserRole() . "<br>";
    echo "Dernière activité: " . ($_SESSION['last_activity'] ?? 'Non définie') . "<br>";
} else {
    echo "❌ Utilisateur non connecté<br>";
}

// Test 4: Test d'authentification directe
echo "<h2>4. Test d'authentification directe</h2>";

require_once __DIR__ . '/models/User.php';

$userModel = new User();
$result = $userModel->authenticate('admin1', 'admin123');

if ($result['success']) {
    echo "✅ Authentification réussie<br>";
    echo "Utilisateur: " . $result['user']['first_name'] . " " . $result['user']['last_name'] . "<br>";
    echo "Rôle: " . $result['user']['role'] . "<br>";
    
    // Créer la session manuellement
    $_SESSION['user_id'] = $result['user']['id'];
    $_SESSION['username'] = $result['user']['username'];
    $_SESSION['user_role'] = $result['user']['role'];
    $_SESSION['user_permissions'] = $result['user']['permissions'];
    $_SESSION['user_name'] = $result['user']['first_name'] . ' ' . $result['user']['last_name'];
    $_SESSION['last_activity'] = time();
    
    echo "✅ Session créée manuellement<br>";
    echo "Session ID après création: " . session_id() . "<br>";
    
    // Vérifier si isLoggedIn() fonctionne maintenant
    if (isLoggedIn()) {
        echo "✅ isLoggedIn() retourne true<br>";
    } else {
        echo "❌ isLoggedIn() retourne false<br>";
    }
    
} else {
    echo "❌ Authentification échouée: " . $result['message'] . "<br>";
}

// Test 5: Test de redirection
echo "<h2>5. Test de redirection</h2>";

$dashboardUrl = getBaseUrl() . '/dashboard.php';
$loginUrl = getBaseUrl() . '/login.php';

echo "URL Dashboard: $dashboardUrl<br>";
echo "URL Login: $loginUrl<br>";

// Vérifier si les headers sont déjà envoyés
echo "Headers envoyés: " . (headers_sent() ? 'Oui' : 'Non') . "<br>";

if (headers_sent($file, $line)) {
    echo "Headers envoyés depuis: $file ligne $line<br>";
}

// Test 6: Test de redirection JavaScript
echo "<h2>6. Test de redirection JavaScript</h2>";

if (isLoggedIn()) {
    echo "Redirection vers le dashboard...<br>";
    echo "<script>
        console.log('Redirection vers le dashboard...');
        setTimeout(function() {
            window.location.href = '$dashboardUrl';
        }, 3000);
    </script>";
    echo "Redirection automatique dans 3 secondes...<br>";
    echo "<a href='$dashboardUrl'>Cliquez ici pour aller au dashboard</a><br>";
} else {
    echo "Redirection vers la page de connexion...<br>";
    echo "<script>
        console.log('Redirection vers la page de connexion...');
        setTimeout(function() {
            window.location.href = '$loginUrl';
        }, 3000);
    </script>";
    echo "Redirection automatique dans 3 secondes...<br>";
    echo "<a href='$loginUrl'>Cliquez ici pour aller à la page de connexion</a><br>";
}

// Test 7: Test de redirection PHP
echo "<h2>7. Test de redirection PHP</h2>";

if (!headers_sent()) {
    echo "✅ Headers non envoyés, redirection PHP possible<br>";
    echo "Pour tester la redirection PHP, cliquez sur le lien ci-dessous :<br>";
    echo "<a href='test_redirect_php.php'>Test de redirection PHP</a><br>";
} else {
    echo "❌ Headers déjà envoyés, redirection PHP impossible<br>";
    echo "Utilisation de JavaScript pour la redirection<br>";
}

// Test 8: Informations de débogage
echo "<h2>8. Informations de débogage</h2>";

echo "PHP Version: " . PHP_VERSION . "<br>";
echo "Session save path: " . session_save_path() . "<br>";
echo "Session cookie params: <pre>" . print_r(session_get_cookie_params(), true) . "</pre>";
echo "Session variables: <pre>" . print_r($_SESSION, true) . "</pre>";

echo "<h2>Test terminé</h2>";
echo "<p><a href='login.php'>Retour à la page de connexion</a></p>";
echo "<p><a href='dashboard.php'>Accéder au dashboard</a></p>";
?> 