<?php
/**
 * الأمان والامتثال - نسخة مطورة
 * لوحة شاملة للأمان والامتثال والتدقيق
 */
use App\Core\Auth;
use App\Core\Tenant;

require_once __DIR__ . '/../src/Core/CSRFProtection.php';

if (!($auth instanceof Auth) || !$auth->can('security.view')) {
    http_response_code(403);
    echo 'غير مسموح بالوصول إلى الأمان والامتثال';
    return;
}

$tenantId = (int)Tenant::id();
$userTenantAnd = '';
try { 
    $db->query('SELECT tenant_id FROM users LIMIT 1'); 
    $userTenantAnd = ' AND u.tenant_id = ' . (int)$tenantId; 
} catch (Throwable $e) {}

$action = $_GET['action'] ?? 'index';

// معالجة الإجراءات
if ($action === 'deactivate_inactive' && $_SERVER['REQUEST_METHOD'] === 'POST') {
    // CSRF Protection
    if (!\App\Core\CSRFProtection::validatePostRequest()) {
        $_SESSION['security_error'] = 'طلب غير صالح.';
        header('Location: index.php?page=security');
        exit;
    }
    $userId = (int)($_POST['user_id'] ?? 0);
    if ($userId > 0) {
        try {
            $stmt = $db->prepare('UPDATE users SET is_active = 0 WHERE id = ? AND tenant_id = ?');
            $stmt->execute([$userId, $tenantId]);
            if (isset($auditLog)) {
                $auditLog->log('user_deactivated', 'user', $userId, null, json_encode(['reason' => 'غير نشط'], JSON_UNESCAPED_UNICODE), $_SESSION['user_id'] ?? null);
            }
            $_SESSION['security_msg'] = 'تم تعطيل المستخدم بنجاح';
        } catch (Throwable $e) {
            $_SESSION['security_error'] = 'حدث خطأ أثناء تعطيل المستخدم';
        }
    }
    header('Location: index.php?page=security');
    exit;
}

if ($action === 'block_ip' && $_SERVER['REQUEST_METHOD'] === 'POST') {
    // CSRF Protection
    if (!\App\Core\CSRFProtection::validatePostRequest()) {
        $_SESSION['security_error'] = 'طلب غير صالح.';
        header('Location: index.php?page=security');
        exit;
    }
    $ip = trim($_POST['ip_address'] ?? '');
    $durationHours = (int)($_POST['duration_hours'] ?? 24);
    $reason = trim($_POST['reason'] ?? 'حظر يدوي');
    $isPermanent = isset($_POST['is_permanent']) ? 1 : 0;
    
    if (!empty($ip) && filter_var($ip, FILTER_VALIDATE_IP)) {
        if ($auth->isIpWhitelisted($ip, $tenantId)) {
            $_SESSION['security_error'] = 'لا يمكن حظر هذا IP — موجود في القائمة البيضاء';
            header('Location: index.php?page=security');
            exit;
        }
        try {
            $blockedUntil = ($isPermanent || $durationHours <= 0) ? null : date('Y-m-d H:i:s', time() + ($durationHours * 3600));
            $stmt = $db->prepare(
                "INSERT INTO blocked_ips (tenant_id, ip_address, blocked_until, reason, is_permanent, created_by) 
                 VALUES (:tid, :ip, :until, :reason, :permanent, :user)
                 ON DUPLICATE KEY UPDATE 
                    blocked_until = VALUES(blocked_until),
                    reason = VALUES(reason),
                    is_permanent = VALUES(is_permanent)"
            );
            $stmt->execute([
                'tid' => $tenantId,
                'ip' => $ip,
                'until' => $blockedUntil,
                'reason' => $reason,
                'permanent' => $isPermanent,
                'user' => $_SESSION['user_id'] ?? null
            ]);
            $_SESSION['security_msg'] = 'تم حظر IP بنجاح';
        } catch (Throwable $e) {
            $_SESSION['security_error'] = 'حدث خطأ أثناء حظر IP';
        }
    } else {
        $_SESSION['security_error'] = 'عنوان IP غير صحيح';
    }
    header('Location: index.php?page=security');
    exit;
}

if ($action === 'unblock_ip' && isset($_GET['ip'])) {
    $ip = trim($_GET['ip']);
    if (!empty($ip)) {
        try {
            $stmt = $db->prepare('DELETE FROM blocked_ips WHERE ip_address = ? AND tenant_id = ?');
            $stmt->execute([$ip, $tenantId]);
            $_SESSION['security_msg'] = 'تم إلغاء حظر IP بنجاح';
        } catch (Throwable $e) {
            $_SESSION['security_error'] = 'حدث خطأ أثناء إلغاء الحظر';
        }
    }
    header('Location: index.php?page=security');
    exit;
}

if ($action === 'add_whitelist_ip' && $_SERVER['REQUEST_METHOD'] === 'POST') {
    // CSRF Protection
    if (!\App\Core\CSRFProtection::validatePostRequest()) {
        $_SESSION['security_error'] = 'طلب غير صالح.';
        header('Location: index.php?page=security');
        exit;
    }
    $ip = trim($_POST['ip_address'] ?? '');
    if (!empty($ip) && filter_var($ip, FILTER_VALIDATE_IP)) {
        try {
            $stmt = $db->prepare('INSERT IGNORE INTO whitelisted_ips (tenant_id, ip_address, created_by) VALUES (?, ?, ?)');
            $stmt->execute([$tenantId, $ip, $_SESSION['user_id'] ?? null]);
            if ($stmt->rowCount() > 0) {
                $_SESSION['security_msg'] = 'تم إضافة IP إلى القائمة البيضاء بنجاح';
            } else {
                $_SESSION['security_msg'] = 'هذا IP موجود مسبقاً في القائمة البيضاء';
            }
        } catch (Throwable $e) {
            $_SESSION['security_error'] = 'حدث خطأ أثناء الإضافة';
        }
    } else {
        $_SESSION['security_error'] = 'عنوان IP غير صحيح';
    }
    header('Location: index.php?page=security');
    exit;
}

if ($action === 'remove_whitelist_ip' && isset($_GET['ip'])) {
    $ip = trim($_GET['ip']);
    if (!empty($ip)) {
        try {
            $stmt = $db->prepare('DELETE FROM whitelisted_ips WHERE ip_address = ? AND tenant_id = ?');
            $stmt->execute([$ip, $tenantId]);
            $_SESSION['security_msg'] = 'تم إزالة IP من القائمة البيضاء';
        } catch (Throwable $e) {
            $_SESSION['security_error'] = 'حدث خطأ أثناء الإزالة';
        }
    }
    header('Location: index.php?page=security');
    exit;
}

// إحصائيات الأمان
$securityStats = [];
$riskAlerts = [];
$complianceStatus = [];
$inactiveUsers = [];
$blockedIps = [];
$whitelistedIps = [];

try {
    // إحصائيات المستخدمين
    $stmt = $db->query('SELECT id, name FROM roles ORDER BY id');
    $roles = $stmt->fetchAll();

    $stmt = $db->query(
        'SELECT r.name AS role_name, COUNT(u.id) AS user_count, SUM(CASE WHEN u.is_active = 1 THEN 1 ELSE 0 END) AS active_count
         FROM roles r
         LEFT JOIN users u ON u.role_id = r.id' . $userTenantAnd . '
         GROUP BY r.id, r.name
         ORDER BY r.id'
    );
    $roleUsers = $stmt->fetchAll();
    
    // إحصائيات الأمان — فلتر التدقيق حسب المختبر (كل مختبر يرى بياناته فقط)
    $auditTenantFilter = ($userTenantAnd !== '') ? ' ((a.tenant_id = ' . (int)$tenantId . ') OR (a.tenant_id IS NULL AND u.tenant_id = ' . (int)$tenantId . ') OR (a.tenant_id IS NULL AND a.user_id IS NULL AND ' . (int)$tenantId . ' = 1))' : '';
    $auditWhere = ($auditTenantFilter !== '') ? ' WHERE ' . $auditTenantFilter : '';
    
    // إجمالي الأحداث
    $stmt = $db->query('SELECT COUNT(*) AS total FROM audit_log a LEFT JOIN users u ON u.id = a.user_id' . $auditWhere);
    $securityStats['total_events'] = (int)$stmt->fetchColumn();
    
    // محاولات الدخول الفاشلة (آخر 7 أيام)
    $stmt = $db->prepare(
        "SELECT COUNT(*) FROM audit_log a 
         LEFT JOIN users u ON u.id = a.user_id
         WHERE a.action = 'login_failed' 
         AND DATE(a.created_at) >= DATE_SUB(CURDATE(), INTERVAL 7 DAY)" . 
         ($auditTenantFilter !== '' ? ' AND ' . $auditTenantFilter : '')
    );
    $stmt->execute();
    $securityStats['failed_logins_7d'] = (int)$stmt->fetchColumn();
    
    // محاولات الدخول الناجحة (آخر 7 أيام)
    $stmt = $db->prepare(
        "SELECT COUNT(*) FROM audit_log a 
         LEFT JOIN users u ON u.id = a.user_id
         WHERE a.action = 'login_success' 
         AND DATE(a.created_at) >= DATE_SUB(CURDATE(), INTERVAL 7 DAY)" . 
         ($auditTenantFilter !== '' ? ' AND ' . $auditTenantFilter : '')
    );
    $stmt->execute();
    $securityStats['successful_logins_7d'] = (int)$stmt->fetchColumn();
    
    // المستخدمون النشطون (آخر 30 يوم)
    $stmt = $db->prepare(
        "SELECT COUNT(DISTINCT a.user_id) FROM audit_log a 
         LEFT JOIN users u ON u.id = a.user_id
         WHERE a.user_id IS NOT NULL 
         AND DATE(a.created_at) >= DATE_SUB(CURDATE(), INTERVAL 30 DAY)" . 
         ($userTenantAnd !== '' ? ' AND u.tenant_id = ' . (int)$tenantId : '')
    );
    $stmt->execute();
    $securityStats['active_users_30d'] = (int)$stmt->fetchColumn();
    
    // الأحداث الحساسة (حذف، تعديل صلاحيات، إلخ)
    $stmt = $db->prepare(
        "SELECT COUNT(*) FROM audit_log a 
         LEFT JOIN users u ON u.id = a.user_id
         WHERE a.action IN ('user_deleted', 'role_updated', 'settings_updated', 'password_changed', 'permission_denied')
         AND DATE(a.created_at) >= DATE_SUB(CURDATE(), INTERVAL 30 DAY)" . 
         ($auditTenantFilter !== '' ? ' AND ' . $auditTenantFilter : '')
    );
    $stmt->execute();
    $securityStats['sensitive_events_30d'] = (int)$stmt->fetchColumn();
    
    // المستخدمون بدون نشاط (أكثر من 90 يوم)
    $stmt = $db->prepare(
        "SELECT COUNT(*) FROM users u 
         WHERE u.is_active = 1" . $userTenantAnd . "
         AND (u.last_login_at IS NULL OR u.last_login_at < DATE_SUB(CURDATE(), INTERVAL 90 DAY))"
    );
    $stmt->execute();
    $securityStats['inactive_users'] = (int)$stmt->fetchColumn();
    
    // تحليل المخاطر
    // IPs متعددة لمحاولات فاشلة
    $stmt = $db->prepare(
        "SELECT a.ip_address, COUNT(*) AS attempts 
         FROM audit_log a 
         LEFT JOIN users u ON u.id = a.user_id
         WHERE a.action = 'login_failed' 
         AND DATE(a.created_at) >= DATE_SUB(CURDATE(), INTERVAL 7 DAY)" . 
         ($auditTenantFilter !== '' ? ' AND ' . $auditTenantFilter : '') . "
         AND a.ip_address IS NOT NULL
         GROUP BY a.ip_address
         HAVING attempts >= 5
         ORDER BY attempts DESC
         LIMIT 10"
    );
    $stmt->execute();
    $riskAlerts['suspicious_ips'] = $stmt->fetchAll();
    
    // مستخدمون بدون صلاحيات
    $stmt = $db->prepare(
        "SELECT u.id, u.full_name, u.username 
         FROM users u 
         LEFT JOIN role_permissions rp ON rp.role_id = u.role_id
         WHERE u.is_active = 1" . $userTenantAnd . "
         AND rp.role_id IS NULL
         LIMIT 10"
    );
    $stmt->execute();
    $riskAlerts['users_no_permissions'] = $stmt->fetchAll();
    
    // أحدث الأحداث الحساسة
    $stmt = $db->prepare(
        "SELECT a.id, a.action, a.created_at, a.ip_address, u.full_name AS user_name
         FROM audit_log a 
         LEFT JOIN users u ON u.id = a.user_id
         WHERE a.action IN ('user_deleted', 'role_updated', 'settings_updated', 'password_changed', 'permission_denied', 'tenant_status_changed')
         AND DATE(a.created_at) >= DATE_SUB(CURDATE(), INTERVAL 7 DAY)" . 
         ($auditTenantFilter !== '' ? ' AND ' . $auditTenantFilter : '') . "
         ORDER BY a.id DESC
         LIMIT 20"
    );
    $stmt->execute();
    $riskAlerts['recent_sensitive'] = $stmt->fetchAll();
    
    // حالة الامتثال
    $complianceStatus['audit_logging'] = true; // مفعّل دائماً
    $complianceStatus['user_management'] = true;
    $complianceStatus['role_based_access'] = true;
    $complianceStatus['password_policy'] = false; // يحتاج تطوير
    
    // أحدث عمليات التدقيق
    $stmt = $db->prepare(
        "SELECT a.id, a.action, a.entity_type, a.entity_id, a.created_at, u.full_name AS user_name
         FROM audit_log a
         LEFT JOIN users u ON u.id = a.user_id" . 
         ($auditTenantFilter !== '' ? ' WHERE ' . $auditTenantFilter : '') . "
         ORDER BY a.id DESC
         LIMIT 50"
    );
    $stmt->execute();
    $auditEntries = $stmt->fetchAll();
    
    // محاولات تسجيل الدخول
    $stmt = $db->prepare(
        "SELECT a.id, a.action, a.created_at, a.ip_address, a.new_values, u.full_name AS user_name
         FROM audit_log a
         LEFT JOIN users u ON u.id = a.user_id
         WHERE a.action IN ('login_success','login_failed')" . 
         ($auditTenantFilter !== '' ? ' AND ' . $auditTenantFilter : '') . "
         ORDER BY a.id DESC
         LIMIT 50"
    );
    $stmt->execute();
    $loginEntries = $stmt->fetchAll();
    
    // توزيع الأحداث حسب اليوم (آخر 7 أيام)
    $stmt = $db->prepare(
        "SELECT DATE(a.created_at) AS event_date, COUNT(*) AS event_count
         FROM audit_log a
         LEFT JOIN users u ON u.id = a.user_id
         WHERE DATE(a.created_at) >= DATE_SUB(CURDATE(), INTERVAL 7 DAY)" . 
         ($auditTenantFilter !== '' ? ' AND ' . $auditTenantFilter : '') . "
         GROUP BY DATE(a.created_at)
         ORDER BY event_date ASC"
    );
    $stmt->execute();
    $dailyEvents = $stmt->fetchAll();
    
    // المستخدمون غير النشطين (أكثر من 90 يوم)
    $stmt = $db->prepare(
        "SELECT u.id, u.full_name, u.username, u.email, u.last_login_at,
                DATEDIFF(CURDATE(), COALESCE(u.last_login_at, u.created_at)) AS days_inactive
         FROM users u 
         WHERE u.is_active = 1" . $userTenantAnd . "
         AND (u.last_login_at IS NULL OR u.last_login_at < DATE_SUB(CURDATE(), INTERVAL 90 DAY))
         ORDER BY days_inactive DESC
         LIMIT 50"
    );
    $stmt->execute();
    $inactiveUsers = $stmt->fetchAll();
    
    // IPs المحظورة (للمختبر الحالي فقط)
    try {
        $db->query('SELECT tenant_id FROM blocked_ips LIMIT 1');
        $stmt = $db->prepare(
            "SELECT bi.ip_address, bi.blocked_at, bi.blocked_until, bi.reason, bi.attempts_count, bi.is_permanent,
                    u.full_name AS blocked_by_name
             FROM blocked_ips bi
             LEFT JOIN users u ON u.id = bi.created_by
             WHERE bi.tenant_id = ? AND (bi.is_permanent = 1 OR bi.blocked_until IS NULL OR bi.blocked_until > NOW())
             ORDER BY bi.blocked_at DESC
             LIMIT 50"
        );
        $stmt->execute([$tenantId]);
    } catch (Throwable $e) {
        $stmt = $db->prepare(
            "SELECT bi.ip_address, bi.blocked_at, bi.blocked_until, bi.reason, bi.attempts_count, bi.is_permanent,
                    u.full_name AS blocked_by_name
             FROM blocked_ips bi
             LEFT JOIN users u ON u.id = bi.created_by
             WHERE is_permanent = 1 OR blocked_until IS NULL OR blocked_until > NOW()
             ORDER BY blocked_at DESC
             LIMIT 50"
        );
        $stmt->execute();
    }
    $blockedIps = $stmt->fetchAll();
    
    // القائمة البيضاء للـ IPs
    try {
        $stmt = $db->prepare(
            "SELECT wi.ip_address, wi.created_at, u.full_name AS created_by_name
             FROM whitelisted_ips wi
             LEFT JOIN users u ON u.id = wi.created_by
             WHERE wi.tenant_id = ?
             ORDER BY wi.created_at DESC
             LIMIT 100"
        );
        $stmt->execute([$tenantId]);
        $whitelistedIps = $stmt->fetchAll();
    } catch (Throwable $e) {
        $whitelistedIps = [];
    }
    
} catch (Throwable $e) {
    $roles = [];
    $roleUsers = [];
    $auditEntries = [];
    $loginEntries = [];
    $dailyEvents = [];
    $inactiveUsers = [];
    $blockedIps = [];
    $whitelistedIps = [];
}

$actionLabels = [
    'login_success' => 'دخول ناجح',
    'login_failed' => 'فشل الدخول',
    'user_deleted' => 'حذف مستخدم',
    'role_updated' => 'تحديث صلاحيات',
    'settings_updated' => 'تحديث إعدادات',
    'password_changed' => 'تغيير كلمة المرور',
    'permission_denied' => 'رفض صلاحية',
    'tenant_status_changed' => 'تغيير حالة مختبر',
];
?>
<div class="page-header">
    <h1>🔒 الأمان والامتثال</h1>
    <div class="actions-bar">
        <a href="index.php?page=users" class="btn-secondary">👥 المستخدمون</a>
        <a href="index.php?page=roles" class="btn-secondary">🔐 الصلاحيات</a>
        <a href="index.php?page=audit_log" class="btn-secondary">📋 سجل التدقيق</a>
        <a href="index.php?page=dashboard" class="btn-secondary">🏠 الرئيسية</a>
    </div>
</div>

<?php if (!empty($_SESSION['security_msg'])): ?>
<div class="alert alert-success" style="margin-bottom:16px;"><?php echo htmlspecialchars($_SESSION['security_msg'], ENT_QUOTES, 'UTF-8'); unset($_SESSION['security_msg']); ?></div>
<?php endif; ?>
<?php if (!empty($_SESSION['security_error'])): ?>
<div class="alert alert-danger" style="margin-bottom:16px;"><?php echo htmlspecialchars($_SESSION['security_error'], ENT_QUOTES, 'UTF-8'); unset($_SESSION['security_error']); ?></div>
<?php endif; ?>

<!-- إحصائيات الأمان -->
<div style="display:grid;grid-template-columns:repeat(auto-fit, minmax(200px, 1fr));gap:16px;margin-bottom:24px;">
    <div class="card" style="text-align:center;">
        <div style="font-size:2rem;font-weight:bold;color:var(--primary);"><?php echo number_format($securityStats['total_events'] ?? 0); ?></div>
        <div style="color:var(--text-muted);margin-top:4px;">إجمالي الأحداث</div>
    </div>
    <div class="card" style="text-align:center;">
        <div style="font-size:2rem;font-weight:bold;color:var(--success);"><?php echo number_format($securityStats['successful_logins_7d'] ?? 0); ?></div>
        <div style="color:var(--text-muted);margin-top:4px;">دخول ناجح (7 أيام)</div>
    </div>
    <div class="card" style="text-align:center;">
        <div style="font-size:2rem;font-weight:bold;color:var(--danger);"><?php echo number_format($securityStats['failed_logins_7d'] ?? 0); ?></div>
        <div style="color:var(--text-muted);margin-top:4px;">دخول فاشل (7 أيام)</div>
    </div>
    <div class="card" style="text-align:center;">
        <div style="font-size:2rem;font-weight:bold;color:var(--info);"><?php echo number_format($securityStats['active_users_30d'] ?? 0); ?></div>
        <div style="color:var(--text-muted);margin-top:4px;">مستخدمون نشطون (30 يوم)</div>
    </div>
    <div class="card" style="text-align:center;">
        <div style="font-size:2rem;font-weight:bold;color:var(--warning);"><?php echo number_format($securityStats['sensitive_events_30d'] ?? 0); ?></div>
        <div style="color:var(--text-muted);margin-top:4px;">أحداث حساسة (30 يوم)</div>
    </div>
    <div class="card" style="text-align:center;">
        <div style="font-size:2rem;font-weight:bold;color:var(--danger);"><?php echo number_format($securityStats['inactive_users'] ?? 0); ?></div>
        <div style="color:var(--text-muted);margin-top:4px;">مستخدمون غير نشطين</div>
    </div>
</div>

<!-- تنبيهات المخاطر -->
<?php if (!empty($riskAlerts['suspicious_ips']) || !empty($riskAlerts['users_no_permissions'])): ?>
<div class="card" style="margin-bottom:16px;border-left:4px solid var(--danger);">
    <h3 style="margin-top:0;color:var(--danger);">⚠️ تنبيهات أمنية</h3>
    
    <?php if (!empty($riskAlerts['suspicious_ips'])): ?>
    <div style="margin-bottom:16px;">
        <h4 style="margin-top:0;">IPs مشبوهة (محاولات دخول فاشلة متعددة)</h4>
        <div class="table-wrapper">
            <table class="table">
                <thead>
                    <tr>
                        <th>عنوان IP</th>
                        <th>عدد المحاولات</th>
                        <th>الحالة</th>
                    </tr>
                </thead>
                <tbody>
                    <?php foreach ($riskAlerts['suspicious_ips'] as $ip): ?>
                    <tr>
                        <td><code><?php echo htmlspecialchars($ip['ip_address'], ENT_QUOTES, 'UTF-8'); ?></code></td>
                        <td><?php echo number_format((int)$ip['attempts']); ?></td>
                        <td><span class="badge badge-cancelled">مشبوه</span></td>
                    </tr>
                    <?php endforeach; ?>
                </tbody>
            </table>
        </div>
    </div>
    <?php endif; ?>
    
    <?php if (!empty($riskAlerts['users_no_permissions'])): ?>
    <div>
        <h4 style="margin-top:0;">مستخدمون بدون صلاحيات</h4>
        <div class="table-wrapper">
            <table class="table">
                <thead>
                    <tr>
                        <th>الاسم</th>
                        <th>اسم المستخدم</th>
                        <th>إجراءات</th>
                    </tr>
                </thead>
                <tbody>
                    <?php foreach ($riskAlerts['users_no_permissions'] as $user): ?>
                    <tr>
                        <td><?php echo htmlspecialchars($user['full_name'], ENT_QUOTES, 'UTF-8'); ?></td>
                        <td><code><?php echo htmlspecialchars($user['username'], ENT_QUOTES, 'UTF-8'); ?></code></td>
                        <td><a href="index.php?page=users&action=edit&id=<?php echo (int)$user['id']; ?>" class="btn-link">تعديل</a></td>
                    </tr>
                    <?php endforeach; ?>
                </tbody>
            </table>
        </div>
    </div>
    <?php endif; ?>
</div>
<?php endif; ?>

<!-- حالة الامتثال -->
<div class="card" style="margin-bottom:16px;">
    <h3 style="margin-top:0;">✅ حالة الامتثال</h3>
    <div style="display:grid;grid-template-columns:repeat(auto-fit, minmax(250px, 1fr));gap:12px;">
        <div style="padding:12px;background:var(--bg-secondary);border-radius:8px;">
            <div style="display:flex;justify-content:space-between;align-items:center;">
                <span>سجل التدقيق</span>
                <span class="badge badge-<?php echo $complianceStatus['audit_logging'] ? 'completed' : 'cancelled'; ?>">
                    <?php echo $complianceStatus['audit_logging'] ? '✅ مفعّل' : '❌ معطّل'; ?>
                </span>
            </div>
        </div>
        <div style="padding:12px;background:var(--bg-secondary);border-radius:8px;">
            <div style="display:flex;justify-content:space-between;align-items:center;">
                <span>إدارة المستخدمين</span>
                <span class="badge badge-<?php echo $complianceStatus['user_management'] ? 'completed' : 'cancelled'; ?>">
                    <?php echo $complianceStatus['user_management'] ? '✅ مفعّل' : '❌ معطّل'; ?>
                </span>
            </div>
        </div>
        <div style="padding:12px;background:var(--bg-secondary);border-radius:8px;">
            <div style="display:flex;justify-content:space-between;align-items:center;">
                <span>التحكم في الوصول (RBAC)</span>
                <span class="badge badge-<?php echo $complianceStatus['role_based_access'] ? 'completed' : 'cancelled'; ?>">
                    <?php echo $complianceStatus['role_based_access'] ? '✅ مفعّل' : '❌ معطّل'; ?>
                </span>
            </div>
        </div>
        <div style="padding:12px;background:var(--bg-secondary);border-radius:8px;">
            <div style="display:flex;justify-content:space-between;align-items:center;">
                <span>سياسة كلمات المرور</span>
                <span class="badge badge-<?php echo $complianceStatus['password_policy'] ? 'completed' : 'cancelled'; ?>">
                    <?php echo $complianceStatus['password_policy'] ? '✅ مفعّل' : '⚠️ يحتاج تطوير'; ?>
                </span>
            </div>
        </div>
    </div>
</div>

<!-- أحدث الأحداث الحساسة -->
<?php if (!empty($riskAlerts['recent_sensitive'])): ?>
<div class="card" style="margin-bottom:16px;">
    <h3 style="margin-top:0;">🔐 أحدث الأحداث الحساسة (7 أيام)</h3>
    <div class="table-wrapper">
        <table class="table">
            <thead>
                <tr>
                    <th>التاريخ</th>
                    <th>الحدث</th>
                    <th>المستخدم</th>
                    <th>IP</th>
                </tr>
            </thead>
            <tbody>
                <?php foreach ($riskAlerts['recent_sensitive'] as $event): ?>
                <tr>
                    <td><?php echo date('Y-m-d H:i', strtotime($event['created_at'])); ?></td>
                    <td><span class="badge badge-warning"><?php echo htmlspecialchars($actionLabels[$event['action']] ?? $event['action'], ENT_QUOTES, 'UTF-8'); ?></span></td>
                    <td><?php echo htmlspecialchars($event['user_name'] ?? 'نظام', ENT_QUOTES, 'UTF-8'); ?></td>
                    <td><code style="font-size:0.8rem;"><?php echo htmlspecialchars($event['ip_address'] ?? '-', ENT_QUOTES, 'UTF-8'); ?></code></td>
                </tr>
                <?php endforeach; ?>
            </tbody>
        </table>
    </div>
</div>
<?php endif; ?>

<!-- ملخص الأدوار والمستخدمين -->
<div class="card" style="margin-bottom:16px;">
    <h3 style="margin-top:0;">👥 ملخص الأدوار والمستخدمين</h3>
    <div class="table-wrapper">
        <table class="table">
            <thead>
                <tr>
                    <th>الدور</th>
                    <th>إجمالي المستخدمين</th>
                    <th>نشط</th>
                    <th>غير نشط</th>
                </tr>
            </thead>
            <tbody>
            <?php if (empty($roleUsers)): ?>
                <tr><td colspan="4" style="text-align:center;padding:24px;color:var(--text-muted);">لا توجد بيانات</td></tr>
            <?php else: ?>
            <?php foreach ($roleUsers as $row): ?>
                <tr>
                    <td><strong><?php echo htmlspecialchars($row['role_name'], ENT_QUOTES, 'UTF-8'); ?></strong></td>
                    <td><?php echo number_format((int)($row['user_count'] ?? 0)); ?></td>
                    <td><span class="badge badge-completed"><?php echo number_format((int)($row['active_count'] ?? 0)); ?></span></td>
                    <td><span class="badge badge-cancelled"><?php echo number_format((int)($row['user_count'] ?? 0) - (int)($row['active_count'] ?? 0)); ?></span></td>
                </tr>
            <?php endforeach; ?>
            <?php endif; ?>
            </tbody>
        </table>
    </div>
</div>

<!-- أحدث العمليات في سجل التدقيق -->
<div class="card" style="margin-bottom:16px;">
    <h3 style="margin-top:0;">📋 أحدث العمليات في سجل التدقيق</h3>
    <div style="margin-bottom:12px;">
        <a href="index.php?page=audit_log" class="btn-secondary" style="font-size:0.9rem;">عرض الكل →</a>
    </div>
    <div class="table-wrapper">
        <table class="table">
            <thead>
                <tr>
                    <th style="width:160px;">الوقت</th>
                    <th>المستخدم</th>
                    <th>الإجراء</th>
                    <th>نوع الكيان</th>
                    <th>رقم الكيان</th>
                </tr>
            </thead>
            <tbody>
            <?php if (empty($auditEntries)): ?>
                <tr><td colspan="5" style="text-align:center;padding:24px;color:var(--text-muted);">لا توجد سجلات</td></tr>
            <?php else: ?>
            <?php foreach (array_slice($auditEntries, 0, 20) as $a): ?>
                <tr>
                    <td>
                        <div style="font-size:0.85rem;"><?php echo date('Y-m-d', strtotime($a['created_at'])); ?></div>
                        <div style="font-size:0.75rem;color:var(--text-muted);"><?php echo date('H:i:s', strtotime($a['created_at'])); ?></div>
                    </td>
                    <td><?php echo htmlspecialchars($a['user_name'] ?? 'نظام', ENT_QUOTES, 'UTF-8'); ?></td>
                    <td><span class="badge badge-info" style="font-size:0.85rem;"><?php echo htmlspecialchars($a['action'], ENT_QUOTES, 'UTF-8'); ?></span></td>
                    <td><?php echo htmlspecialchars($a['entity_type'] ?? '-', ENT_QUOTES, 'UTF-8'); ?></td>
                    <td><?php echo $a['entity_id'] ? (int)$a['entity_id'] : '-'; ?></td>
                </tr>
            <?php endforeach; ?>
            <?php endif; ?>
            </tbody>
        </table>
    </div>
</div>

<!-- محاولات تسجيل الدخول الأخيرة -->
<div class="card">
    <h3 style="margin-top:0;">🔐 محاولات تسجيل الدخول الأخيرة</h3>
    <div style="margin-bottom:12px;">
        <a href="index.php?page=audit_log&action=login_success" class="btn-secondary" style="font-size:0.9rem;">عرض الكل →</a>
    </div>
    <div class="table-wrapper">
        <table class="table">
            <thead>
                <tr>
                    <th style="width:160px;">الوقت</th>
                    <th>المستخدم</th>
                    <th>اسم المستخدم المدخل</th>
                    <th>النتيجة</th>
                    <th>عنوان IP</th>
                </tr>
            </thead>
            <tbody>
            <?php if (empty($loginEntries)): ?>
                <tr><td colspan="5" style="text-align:center;padding:24px;color:var(--text-muted);">لا توجد سجلات</td></tr>
            <?php else: ?>
            <?php foreach (array_slice($loginEntries, 0, 20) as $l): ?>
                <?php
                $decoded = null;
                if (is_string($l['new_values']) && $l['new_values'] !== '') {
                    $tmp = json_decode($l['new_values'], true);
                    if (is_array($tmp)) {
                        $decoded = $tmp;
                    }
                }
                $inputUsername = $decoded['username'] ?? '';
                $isSuccess = $l['action'] === 'login_success';
                $resultLabel = $isSuccess ? 'نجاح' : 'فشل';
                ?>
                <tr style="<?php echo !$isSuccess ? 'background-color:#fef2f2;' : ''; ?>">
                    <td>
                        <div style="font-size:0.85rem;"><?php echo date('Y-m-d', strtotime($l['created_at'])); ?></div>
                        <div style="font-size:0.75rem;color:var(--text-muted);"><?php echo date('H:i:s', strtotime($l['created_at'])); ?></div>
                    </td>
                    <td><?php echo htmlspecialchars($l['user_name'] ?? '-', ENT_QUOTES, 'UTF-8'); ?></td>
                    <td><code><?php echo htmlspecialchars($inputUsername, ENT_QUOTES, 'UTF-8'); ?></code></td>
                    <td>
                        <span class="badge badge-<?php echo $isSuccess ? 'completed' : 'cancelled'; ?>">
                            <?php echo htmlspecialchars($resultLabel, ENT_QUOTES, 'UTF-8'); ?>
                        </span>
                    </td>
                    <td><code style="font-size:0.8rem;"><?php echo htmlspecialchars($l['ip_address'] ?? '-', ENT_QUOTES, 'UTF-8'); ?></code></td>
                </tr>
            <?php endforeach; ?>
            <?php endif; ?>
            </tbody>
        </table>
    </div>
</div>

<!-- المستخدمون غير النشطين -->
<?php if (!empty($inactiveUsers)): ?>
<div class="card" style="margin-top:16px;">
    <h3 style="margin-top:0;">⏸️ المستخدمون غير النشطين (أكثر من 90 يوم)</h3>
    <div class="table-wrapper">
        <table class="table">
            <thead>
                <tr>
                    <th>الاسم</th>
                    <th>اسم المستخدم</th>
                    <th>البريد</th>
                    <th>آخر دخول</th>
                    <th>أيام غير نشط</th>
                    <th>الإجراءات</th>
                </tr>
            </thead>
            <tbody>
                <?php foreach ($inactiveUsers as $iu): ?>
                <tr>
                    <td><?php echo htmlspecialchars($iu['full_name'], ENT_QUOTES, 'UTF-8'); ?></td>
                    <td><code><?php echo htmlspecialchars($iu['username'], ENT_QUOTES, 'UTF-8'); ?></code></td>
                    <td><?php echo htmlspecialchars($iu['email'] ?? '-', ENT_QUOTES, 'UTF-8'); ?></td>
                    <td><?php echo $iu['last_login_at'] ? date('Y-m-d', strtotime($iu['last_login_at'])) : 'لم يسجل دخول'; ?></td>
                    <td><span class="badge badge-warning"><?php echo number_format((int)$iu['days_inactive']); ?> يوم</span></td>
                    <td>
                        <form method="post" action="index.php?page=security&action=deactivate_inactive" style="display:inline;" onsubmit="return confirm('هل أنت متأكد من تعطيل هذا المستخدم؟');">
                            <input type="hidden" name="user_id" value="<?php echo (int)$iu['id']; ?>">
                            <button type="submit" class="btn-link" style="color:var(--danger);">تعطيل</button>
                        </form>
                        <a href="index.php?page=users&action=edit&id=<?php echo (int)$iu['id']; ?>" class="btn-link">تعديل</a>
                    </td>
                </tr>
                <?php endforeach; ?>
            </tbody>
        </table>
    </div>
</div>
<?php endif; ?>

<!-- القائمة البيضاء للـ IPs (لا تُحظر أبداً) -->
<div class="card" style="margin-top:16px;">
    <h3 style="margin-top:0;">✅ القائمة البيضاء للـ IPs</h3>
    <p style="color:var(--text-muted);margin-bottom:16px;font-size:0.9rem;">العناوين المضافة هنا لا تُحظر أبداً — حتى مع محاولات دخول فاشلة متعددة.</p>
    <div style="margin-bottom:16px;">
        <button onclick="document.getElementById('whitelist-ip-form').style.display='block';" class="btn-secondary">➕ إضافة IP للقائمة البيضاء</button>
    </div>
    
    <div id="whitelist-ip-form" style="display:none;margin-bottom:16px;padding:16px;background:var(--bg-secondary);border-radius:8px;">
        <form method="post" action="index.php?page=security&action=add_whitelist_ip">
            <div style="display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap;">
                <div>
                    <label>عنوان IP</label>
                    <input type="text" name="ip_address" required placeholder="192.168.1.1" pattern="^(\d{1,3}\.){3}\d{1,3}$">
                </div>
                <div>
                    <button type="submit" class="btn-primary">إضافة</button>
                    <button type="button" onclick="document.getElementById('whitelist-ip-form').style.display='none';" class="btn-secondary">إلغاء</button>
                </div>
            </div>
        </form>
    </div>
    
    <div class="table-wrapper">
        <table class="table">
            <thead>
                <tr>
                    <th>عنوان IP</th>
                    <th>تاريخ الإضافة</th>
                    <th>أضيف بواسطة</th>
                    <th>الإجراءات</th>
                </tr>
            </thead>
            <tbody>
                <?php if (empty($whitelistedIps)): ?>
                <tr><td colspan="4" style="text-align:center;padding:24px;color:var(--text-muted);">لا توجد عناوين في القائمة البيضاء</td></tr>
                <?php else: ?>
                <?php foreach ($whitelistedIps as $wi): ?>
                <tr>
                    <td><code><?php echo htmlspecialchars($wi['ip_address'], ENT_QUOTES, 'UTF-8'); ?></code></td>
                    <td><?php echo date('Y-m-d H:i', strtotime($wi['created_at'])); ?></td>
                    <td><?php echo htmlspecialchars($wi['created_by_name'] ?? '-', ENT_QUOTES, 'UTF-8'); ?></td>
                    <td>
                        <a href="index.php?page=security&action=remove_whitelist_ip&ip=<?php echo urlencode($wi['ip_address']); ?>" 
                           onclick="return confirm('هل تريد إزالة هذا IP من القائمة البيضاء؟');" 
                           class="btn-link" style="color:var(--danger);">إزالة</a>
                    </td>
                </tr>
                <?php endforeach; ?>
                <?php endif; ?>
            </tbody>
        </table>
    </div>
</div>

<!-- IPs المحظورة -->
<div class="card" style="margin-top:16px;">
    <h3 style="margin-top:0;">🚫 IPs المحظورة</h3>
    <div style="margin-bottom:16px;">
        <button onclick="document.getElementById('block-ip-form').style.display='block';" class="btn-secondary">➕ حظر IP جديد</button>
    </div>
    
    <div id="block-ip-form" style="display:none;margin-bottom:16px;padding:16px;background:var(--bg-secondary);border-radius:8px;">
        <form method="post" action="index.php?page=security&action=block_ip">
            <div style="display:grid;grid-template-columns:repeat(auto-fit, minmax(200px, 1fr));gap:12px;margin-bottom:12px;">
                <div>
                    <label>عنوان IP</label>
                    <input type="text" name="ip_address" required placeholder="192.168.1.1" pattern="^(\d{1,3}\.){3}\d{1,3}$">
                </div>
                <div>
                    <label>مدة الحظر (ساعات)</label>
                    <input type="number" name="duration_hours" value="24" min="1" required>
                </div>
                <div>
                    <label>السبب</label>
                    <input type="text" name="reason" value="حظر يدوي" required>
                </div>
            </div>
            <div style="margin-bottom:12px;">
                <label class="settings-checkbox">
                    <input type="checkbox" name="is_permanent" value="1">
                    حظر دائم
                </label>
            </div>
            <div>
                <button type="submit" class="btn-primary">حظر</button>
                <button type="button" onclick="document.getElementById('block-ip-form').style.display='none';" class="btn-secondary">إلغاء</button>
            </div>
        </form>
    </div>
    
    <div class="table-wrapper">
        <table class="table">
            <thead>
                <tr>
                    <th>عنوان IP</th>
                    <th>تاريخ الحظر</th>
                    <th>ينتهي في</th>
                    <th>السبب</th>
                    <th>عدد المحاولات</th>
                    <th>حظر بواسطة</th>
                    <th>الإجراءات</th>
                </tr>
            </thead>
            <tbody>
                <?php if (empty($blockedIps)): ?>
                <tr><td colspan="7" style="text-align:center;padding:24px;color:var(--text-muted);">لا توجد IPs محظورة</td></tr>
                <?php else: ?>
                <?php foreach ($blockedIps as $bi): ?>
                <tr>
                    <td><code><?php echo htmlspecialchars($bi['ip_address'], ENT_QUOTES, 'UTF-8'); ?></code></td>
                    <td><?php echo date('Y-m-d H:i', strtotime($bi['blocked_at'])); ?></td>
                    <td>
                        <?php if ($bi['is_permanent']): ?>
                            <span class="badge badge-danger">دائم</span>
                        <?php elseif ($bi['blocked_until']): ?>
                            <?php echo date('Y-m-d H:i', strtotime($bi['blocked_until'])); ?>
                        <?php else: ?>
                            <span class="badge badge-warning">غير محدد</span>
                        <?php endif; ?>
                    </td>
                    <td><?php echo htmlspecialchars($bi['reason'] ?? '-', ENT_QUOTES, 'UTF-8'); ?></td>
                    <td><?php echo number_format((int)$bi['attempts_count']); ?></td>
                    <td><?php echo htmlspecialchars($bi['blocked_by_name'] ?? 'نظام', ENT_QUOTES, 'UTF-8'); ?></td>
                    <td>
                        <a href="index.php?page=security&action=unblock_ip&ip=<?php echo urlencode($bi['ip_address']); ?>" 
                           onclick="return confirm('هل أنت متأكد من إلغاء حظر هذا IP؟');" 
                           class="btn-link" style="color:var(--success);">إلغاء الحظر</a>
                    </td>
                </tr>
                <?php endforeach; ?>
                <?php endif; ?>
            </tbody>
        </table>
    </div>
</div>

<!-- معلومات إضافية -->
<div class="card" style="margin-top:16px;">
    <h3 style="margin-top:0;">💡 توصيات الأمان</h3>
    <ul style="line-height:1.8;">
        <li>✅ تأكد من تفعيل سجل التدقيق لجميع العمليات الحساسة</li>
        <li>✅ راجع محاولات الدخول الفاشلة بانتظام</li>
        <li>✅ تأكد من أن جميع المستخدمين لديهم صلاحيات مناسبة</li>
        <li>✅ سياسة كلمات مرور قوية مفعّلة (حد أدنى 8 أحرف، أحرف كبيرة وصغيرة، أرقام)</li>
        <li>✅ نظام حظر IPs المشبوهة تلقائياً مفعّل</li>
        <li>⚠️ راجع المستخدمين غير النشطين واعطّل حساباتهم إذا لزم الأمر</li>
        <li>⚠️ راقب IPs المحظورة وألغِ الحظر عند الحاجة</li>
        <li>✅ أضف عناوين موثوقة (مكتب، خادم) للقائمة البيضاء لتفادي حظرها تلقائياً</li>
        <li>📋 احتفظ بنسخ احتياطية من سجل التدقيق بانتظام</li>
    </ul>
</div>
