[ 'can_manage_servers' => true, 'can_manage_domains' => true, 'can_manage_users' => true, 'can_view_reports' => true, 'can_manage_settings' => true ], 'manager' => [ 'can_manage_servers' => true, 'can_manage_domains' => true, 'can_manage_users' => false, 'can_view_reports' => true, 'can_manage_settings' => false ], 'user' => [ 'can_manage_servers' => false, 'can_manage_domains' => false, 'can_manage_users' => false, 'can_view_reports' => true, 'can_manage_settings' => false ] ]; $action = $_GET['action'] ?? 'check'; switch ($action) { case 'check': $user_role = $_SESSION['user_role'] ?? 'user'; $page = $_GET['page'] ?? ''; if (isset($roles[$user_role])) { $permissions = $roles[$user_role]; // Vérifier l'accès à une page spécifique $page_access = [ 'mta-servers' => $permissions['can_manage_servers'], 'domains' => $permissions['can_manage_domains'], 'users' => $permissions['can_manage_users'], 'reports' => $permissions['can_view_reports'], 'settings' => $permissions['can_manage_settings'] ]; echo json_encode([ 'status' => 'success', 'user_role' => $user_role, 'permissions' => $permissions, 'page_access' => $page_access, 'has_access' => isset($page_access[$page]) ? $page_access[$page] : true ]); } else { echo json_encode([ 'status' => 'error', 'message' => 'Invalid user role' ]); } break; case 'menu': $user_role = $_SESSION['user_role'] ?? 'user'; // Menu basé sur les permissions $menu_items = [ [ 'title' => 'Dashboard', 'url' => '/', 'icon' => 'dashboard', 'visible' => true ], [ 'title' => 'Servers Management', 'url' => '/mta-servers.html', 'icon' => 'server', 'visible' => in_array($user_role, ['admin', 'manager']), 'submenu' => [ ['title' => 'All Servers', 'url' => '/mta-servers.html'], ['title' => 'Create Server', 'url' => '/mta-create.html'], ['title' => 'VMTA Manager', 'url' => '/vmta-manager.html'] ] ], [ 'title' => 'Domains', 'url' => '/domains.html', 'icon' => 'domain', 'visible' => in_array($user_role, ['admin', 'manager']) ], [ 'title' => 'Campaigns', 'url' => '/campaigns.html', 'icon' => 'campaign', 'visible' => true ], [ 'title' => 'Reports', 'url' => '/reports.html', 'icon' => 'analytics', 'visible' => true ], [ 'title' => 'Tools', 'url' => '#', 'icon' => 'tools', 'visible' => true, 'submenu' => [ ['title' => 'DNS Checker', 'url' => '/tools/dns-checker.html'], ['title' => 'Email Verifier', 'url' => '/tools/email-verifier.html'], ['title' => 'Spam Test', 'url' => '/tools/spam-test.html'], ['title' => 'Blacklist Check', 'url' => '/tools/blacklist-check.html'] ] ], [ 'title' => 'Settings', 'url' => '/settings.html', 'icon' => 'settings', 'visible' => $user_role === 'admin' ] ]; // Filtrer les items visibles $visible_menu = array_filter($menu_items, fn($item) => $item['visible']); echo json_encode([ 'status' => 'success', 'user_role' => $user_role, 'menu_items' => array_values($visible_menu) ]); break; case 'set_role': $role = $_GET['role'] ?? 'user'; if (in_array($role, ['admin', 'manager', 'user'])) { $_SESSION['user_role'] = $role; echo json_encode([ 'status' => 'success', 'message' => 'Role updated to ' . $role ]); } else { echo json_encode([ 'status' => 'error', 'message' => 'Invalid role' ]); } break; default: echo json_encode([ 'status' => 'error', 'message' => 'Action not recognized' ]); } ?>