<?php
declare(strict_types=1);

function role(): string {
  return strtoupper((string)($_SESSION['role'] ?? 'STAFF'));
}

function can(string $perm): bool {
  $r = role();
  $perm = strtoupper($perm);

  // أنت: كل شيء
  if ($r === 'ADMIN') return true;

  // السكرتارية: كل شيء ما عدا صفحة الصلاحيات
  if ($r === 'SECRETARY') {
    return $perm !== 'MANAGE_PERMISSIONS';
  }

  // المحامي: إدارة القضايا + المستندات + الجلسات (عدّل حسب نظامك)
  if ($r === 'LAWYER') {
    return in_array($perm, [
      'VIEW_CASES','ADD_CASE','EDIT_CASE',
      'VIEW_DOCUMENTS','UPLOAD_DOCUMENTS',
      'VIEW_SESSIONS','EDIT_SESSIONS',
      'VIEW_TASKS','EDIT_TASKS',
    ], true);
  }

  // HR: شؤون الموظفين فقط
  if ($r === 'HR') {
    return in_array($perm, [
      'VIEW_HR','EDIT_HR',
      'VIEW_EMPLOYEES','EDIT_EMPLOYEES',
    ], true);
  }

  // FINANCE: المالية فقط
  if ($r === 'FINANCE') {
    return in_array($perm, [
      'VIEW_FINANCE','EDIT_FINANCE',
      'VIEW_INVOICES','EDIT_INVOICES',
      'VIEW_PAYMENTS','EDIT_PAYMENTS',
    ], true);
  }

  // STAFF: عرض فقط (اختياري)
  if ($r === 'STAFF') {
    return in_array($perm, [
      'VIEW_CASES','VIEW_SESSIONS','VIEW_TASKS'
    ], true);
  }

  return false;
}

function require_perm(string $perm): void {
  if (!can($perm)) {
    http_response_code(403);
    exit('ليس لديك صلاحية للوصول.');
  }
}