getMessage(); } } } elseif ($action === 'update_user') { $userId = intval($_POST['user_id'] ?? 0); $username = trim($_POST['username'] ?? ''); $fullName = trim($_POST['full_name'] ?? ''); $email = trim($_POST['email'] ?? ''); $groupId = intval($_POST['group_id'] ?? 0); $isActive = isset($_POST['is_active']) ? 1 : 0; $password = $_POST['password'] ?? ''; if (empty($username)) { $error = "Username is required."; } else { try { updateUser($userId, $username, $fullName, $email, $groupId, $isActive, $password); $success = "User updated successfully!"; } catch (Exception $e) { $error = "Failed to update user: " . $e->getMessage(); } } } elseif ($action === 'delete_user') { $userId = intval($_POST['user_id'] ?? 0); // Prevent deleting self if ($userId === getCurrentUserId()) { $error = "You cannot delete your own account."; } else { try { deleteUser($userId); $success = "User deleted successfully!"; } catch (Exception $e) { $error = "Failed to delete user: " . $e->getMessage(); } } } elseif ($action === 'set_permission') { $groupId = intval($_POST['group_id'] ?? 0); $itemType = $_POST['item_type'] ?? ''; $itemId = $_POST['item_id'] ?? null; if ($itemId !== null && $itemId !== '') { $itemId = intval($itemId); } else { $itemId = null; } $canView = isset($_POST['can_view']) ? 1 : 0; $canEdit = isset($_POST['can_edit']) ? 1 : 0; $canDelete = isset($_POST['can_delete']) ? 1 : 0; try { setPermission($groupId, $itemType, $itemId, $canView, $canEdit, $canDelete); $success = "Permission set successfully!"; } catch (Exception $e) { $error = "Failed to set permission: " . $e->getMessage(); } } elseif ($action === 'remove_permission') { $groupId = intval($_POST['group_id'] ?? 0); $itemType = $_POST['item_type'] ?? ''; $itemId = $_POST['item_id'] ?? null; if ($itemId !== null && $itemId !== '') { $itemId = intval($itemId); } else { $itemId = null; } try { removePermission($groupId, $itemType, $itemId); $success = "Permission removed successfully!"; } catch (Exception $e) { $error = "Failed to remove permission: " . $e->getMessage(); } } elseif ($action === 'create_group') { $name = trim($_POST['name'] ?? ''); $description = trim($_POST['description'] ?? ''); if (empty($name)) { $error = "Group name is required."; } else { try { createGroup($name, $description); $success = "Group created successfully!"; } catch (Exception $e) { $error = "Failed to create group: " . $e->getMessage(); } } } elseif ($action === 'update_group') { $groupId = intval($_POST['group_id'] ?? 0); $name = trim($_POST['name'] ?? ''); $description = trim($_POST['description'] ?? ''); if (empty($name)) { $error = "Group name is required."; } else { try { updateGroup($groupId, $name, $description); $success = "Group updated successfully!"; } catch (Exception $e) { $error = "Failed to update group: " . $e->getMessage(); } } } elseif ($action === 'delete_group') { $groupId = intval($_POST['group_id'] ?? 0); // Check if group has users $userCount = getGroupUserCount($groupId); if ($userCount > 0) { $error = "Cannot delete group with {$userCount} user(s). Please reassign users first."; } else { try { deleteGroup($groupId); $success = "Group deleted successfully!"; } catch (Exception $e) { $error = "Failed to delete group: " . $e->getMessage(); } } } elseif ($action === 'update_geoserver') { $url = trim($_POST['geoserver_url'] ?? ''); $username = trim($_POST['geoserver_username'] ?? ''); $password = $_POST['geoserver_password'] ?? ''; if (empty($url) || empty($username) || empty($password)) { $error = "Username/password and URL are required."; } else { try { saveGeoServerConfig($url, $username, $password); $success = "Geoserver updated successfully!"; } catch (Exception $e) { $error = "Failed to update geoserver: " . $e->getMessage(); } } } } // Get all users try { $users = getAllUsers(); } catch (Exception $e) { $error = "Failed to load users."; $users = []; } // Get all groups try { $groups = getAllGroups(); } catch (Exception $e) { $error = "Failed to load groups."; $groups = []; } // Get permissions for all groups $allGroupPermissions = []; foreach ($groups as $group) { try { $allGroupPermissions[$group['id']] = getGroupPermissions($group['id']); } catch (Exception $e) { $allGroupPermissions[$group['id']] = []; } } // Also get user counts for each group $groupUserCounts = []; foreach ($groups as $group) { try { $groupUserCounts[$group['id']] = getGroupUserCount($group['id']); } catch (Exception $e) { $groupUserCounts[$group['id']] = 0; } } // Get selected group for permission management (from GET parameter) $selectedGroupId = isset($_GET['manage_permissions']) ? intval($_GET['manage_permissions']) : null; $selectedGroup = null; $selectedGroupPermissions = []; if ($selectedGroupId) { $selectedGroup = getGroupById($selectedGroupId); if ($selectedGroup) { $selectedGroupPermissions = $allGroupPermissions[$selectedGroupId] ?? []; } } // Get all content items for permission management try { $allMaps = getAllMaps(); $allDashboards = getAllDashboards(); $allDocuments = getAllDocuments(); $allHtmlPages = getAllHtmlPages(); } catch (Exception $e) { $allMaps = []; $allDashboards = []; $allDocuments = []; $allHtmlPages = []; } $geoserver_config = getGeoServerConfig(); // Flush output buffer ob_end_flush(); ?>
| Username | Full Name | Group | Status | Last Login | Actions | |
|---|---|---|---|---|---|---|
| You | Active Inactive | Never |
| URL | Username | Actions |
|---|---|---|