<?php
// Démarrage de la session de manière sécurisée
if (session_status() === PHP_SESSION_NONE) {
    session_start();
}

// Inclusion de la connexion à la base de données 
require_once __DIR__ . '/db.php';

/**
 * Tente de connecter un utilisateur
 * Retourne true si succès, "non_valide" si en attente, false si échec
 */
function loginUser($email, $password_saisi) {
    global $pdo;
    
    // 1. On cherche l'utilisateur par son email
    $stmt = $pdo->prepare("SELECT id, nom, email, password, est_valide FROM utilisateurs WHERE email = :email");
    $stmt->execute(['email' => $email]);
    $user = $stmt->fetch();

    // 2. Vérification du mot de passe haché
    if ($user && password_verify($password_saisi, $user['password'])) {
        
        // 3. Le compte a-t-il été validé par la mairie ?
        if ($user['est_valide'] == 0) {
            return "non_valide"; // Permettra d'afficher un message spécifique sur la page de connexion
        }

        // 4. Récupération de TOUS les rôles via la table de liaison
        $stmtRoles = $pdo->prepare("
            SELECT r.nom_role 
            FROM roles r
            INNER JOIN utilisateurs_roles ur ON r.id = ur.role_id
            WHERE ur.utilisateur_id = :user_id
        ");
        $stmtRoles->execute(['user_id' => $user['id']]);
        
        // On récupère une liste simple (ex: ['Villageois', 'Administrateur'])
        $roles = $stmtRoles->fetchAll(PDO::FETCH_COLUMN);

        // 5. Enregistrement des données en session
        $_SESSION['user_id'] = $user['id'];
        $_SESSION['nom'] = $user['nom'];
        $_SESSION['est_valide'] = $user['est_valide'];
        $_SESSION['user_roles'] = $roles; 
        
        return true;
    }
    
    return false;
}

/**
 * Vérifie si un utilisateur est connecté
 */
function isLogged() {
    return isset($_SESSION['user_id']);
}

/**
 * Vérifie si l'utilisateur possède un rôle spécifique (système multi-rôles)
 */
function hasRole($roleRecherche) {
    if (!isset($_SESSION['user_roles']) || !is_array($_SESSION['user_roles'])) {
        return false;
    }
    return in_array($roleRecherche, $_SESSION['user_roles']);
}

/**
 * Vérifie si l'utilisateur connecté est un administrateur
 */
function isAdmin() {
    return hasRole('Administrateur');
}

/**
 * Déconnecte l'utilisateur
 */
function logoutUser() {
    // Détruit toutes les variables de session
    $_SESSION = array();
    session_destroy();
}
?>