<?php
// auth/auth_functions.php

function loginUser($userId, $passwordHash, $remember = true) {
    global $conn;
    
    // 1. إعداد الجلسة العادية
    $_SESSION['admin_id'] = $userId;
    $_SESSION['password_hash'] = $passwordHash;
    
    // جلب نسخة الجلسة الحالية
    $stmt = $conn->prepare("SELECT session_version FROM users WHERE id = ?");
    $stmt->execute([$userId]);
    $version = $stmt->fetchColumn();
    $_SESSION['session_version'] = $version;

    // 2. إذا اختار "تذكرني" (لمدة 3 أشهر)
    if ($remember) {
        $token = bin2hex(random_bytes(32)); // رمز عشوائي آمن
        $expiry = time() + (90 * 24 * 60 * 60); // 90 يوم
        
        // حفظ التوكن في قاعدة البيانات
        $stmt = $conn->prepare("UPDATE users SET remember_token = ? WHERE id = ?");
        $stmt->execute([$token, $userId]);
        
        // حفظ التوكن في كوكيز المتصفح (HttpOnly للحماية من الاختراق)
        setcookie('remember_me', $token, $expiry, "/", "", false, true);
    }
}

function checkAuthentication() {
    global $conn;

    // 1. إذا كانت الجلسة موجودة، نتحقق من "الإصدار" فقط (للطرد عند تغيير البيانات)
    if (isset($_SESSION['admin_id'])) {
        $stmt = $conn->prepare("SELECT password, session_version FROM users WHERE id = ?");
        $stmt->execute([$_SESSION['admin_id']]);
        $user = $stmt->fetch();

        if ($user && $_SESSION['session_version'] == $user['session_version']) {
            return true; // الجلسة سليمة
        } else {
            logoutUser(); // تم تغيير البيانات، اخرج فوراً
        }
    }

    // 2. إذا لم توجد جلسة، نحاول تسجيل الدخول عبر الكوكيز (الـ 3 أشهر)
    if (isset($_COOKIE['remember_me'])) {
        $token = $_COOKIE['remember_me'];
        $stmt = $conn->prepare("SELECT id, password, session_version FROM users WHERE remember_token = ?");
        $stmt->execute([$token]);
        $user = $stmt->fetch();

        if ($user) {
            // إعادة إحياء الجلسة
            $_SESSION['admin_id'] = $user['id'];
            $_SESSION['password_hash'] = $user['password'];
            $_SESSION['session_version'] = $user['session_version'];
            return true;
        }
    }

    return false; // غير مسجل دخول
}

function logoutUser() {
    global $conn;
    if (isset($_SESSION['admin_id'])) {
        // مسح التوكن من القاعدة عند تسجيل الخروج اليدوي لأمان أكثر
        $stmt = $conn->prepare("UPDATE users SET remember_token = NULL WHERE id = ?");
        $stmt->execute([$_SESSION['admin_id']]);
    }
    session_unset();
    session_destroy();
    setcookie('remember_me', '', time() - 3600, "/"); // مسح الكوكيز
    header("Location: /agairm/auth/login.php");
    exit;
}
?>