prepare("SELECT * FROM users WHERE id = ?"); $stmt->execute([$_SESSION['user_id']]); return $stmt->fetch(PDO::FETCH_ASSOC) ?: null; } function has_permission($page, $action = 'view') { $user = get_logged_in_user(); if (!$user) return false; // Super Admins bypass permissions. Fallback logic. if ($user['role'] === 'admin' && empty($user['role_id'])) return true; if (!empty($user['role_id'])) { $stmt = db()->prepare("SELECT is_system FROM roles WHERE id = ?"); $stmt->execute([$user['role_id']]); $role = $stmt->fetch(PDO::FETCH_ASSOC); if ($role && $role['is_system']) return true; // Super admin $stmt = db()->prepare("SELECT * FROM role_permissions WHERE role_id = ? AND page = ?"); $stmt->execute([$user['role_id'], $page]); $perms = $stmt->fetch(PDO::FETCH_ASSOC); if ($perms) { $col = 'can_' . $action; return !empty($perms[$col]); } } return false; } function require_permission($page, $action = 'view') { if (!has_permission($page, $action)) { http_response_code(403); die("403 Forbidden - You don't have permission to perform this action."); } }