<?php
// guard.php - حماية صفحات لوحة التحكم وتأمين الجلسات

if (session_status() === PHP_SESSION_NONE) {
    session_start();
}

// استخدام __DIR__ يضمن استدعاء الملفات بغض النظر عن مكان الملف الذي يستدعي guard.php
require_once __DIR__ . '/config.php';
require_once __DIR__ . '/auth_functions.php';

// 1. التحقق من حالة تسجيل الدخول وصلاحية الجلسة
if (!checkAuthentication()) {
    // التوجيه لصفحة تسجيل الدخول إذا لم يكن مصرحاً له
    header("Location: /auth/login.php");
    exit;
}

// -----------------------------------------------------------------
// 2. تحديث هوية الجلسة (Security Enhancement)
// -----------------------------------------------------------------
// نقوم بتغيير معرف الجلسة كل 30 دقيقة لضمان عدم سرقتها (Session Fixation Protection)
if (!isset($_SESSION['last_regeneration'])) {
    session_regenerate_id(true);
    $_SESSION['last_regeneration'] = time();
} else {
    // إذا مر أكثر من 30 دقيقة على آخر تحديث، قم بتحديث المعرف مرة أخرى
    if (time() - $_SESSION['last_regeneration'] > 1800) {
        session_regenerate_id(true);
        $_SESSION['last_regeneration'] = time();
    }
}

// 3. منع المتصفح من تخزين الصفحة (Cache Control)
header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); 

// الآن المتغيرات التالية متاحة لك في كل الصفحات المحمية:
// $_SESSION['admin_id'] -> معرف المدير
// $_SESSION['username'] -> اسم المستخدم
?>