diff --git a/files/dashboard/index.php b/files/dashboard/index.php
index 2cfc55e..22b5ad8 100644
--- a/files/dashboard/index.php
+++ b/files/dashboard/index.php
@@ -26,42 +26,68 @@
['Administrator' => [...], 'vnc_admin' => [...]] ]
+
if (isset($data['error'])) {
echo "
Error: {$data['error']}
";
} else {
- echo "| GPO | AD Group | Local Group |
";
- foreach ($data as $item) {
- echo "| {$item['gpo']} | {$item['ad_group']} | {$item['local_group']} |
";
+ foreach ($data as $row) {
+ // safety: skip rows that do not contain the expected keys
+ if (!isset($row['gpo'], $row['ad_group'], $row['local_group'])) {
+ continue;
+ }
+ $gpoName = $row['gpo'];
+ $adGroup = $row['ad_group'];
+ $localGroup = strtolower($row['local_group']);
+ // initialise if not already done
+ if (!isset($gpoMap[$gpoName])) {
+ $gpoMap[$gpoName] = [
+ 'administrators' => [],
+ 'vnc_admin' => []
+ ];
+ }
+ // put the ad_group into the right bucket
+ if ($localGroup === 'administrators') {
+ $gpoMap[$gpoName]['administrators'][] = $adGroup;
+ } elseif ($localGroup === 'vnc_admin') {
+ $gpoMap[$gpoName]['vnc_admin'][] = $adGroup;
+ }
}
- echo "
";
+ ksort($gpoMap, SORT_STRING | SORT_FLAG_CASE);
+ echo '';
+ echo '| GPO | Administrators | vnc_admin |
';
+
+ foreach ($gpoMap as $gpoName => $cols) {
+ // Remove duplicates and build comma‑separated lists
+ $adminGroups = implode('
', array_unique($cols['administrators']));
+ $vncGroups = implode('
', array_unique($cols['vnc_admin']));
+
+ echo '';
+ echo "| {$gpoName} | ";
+ echo "{$adminGroups} | ";
+ echo "{$vncGroups} | ";
+ echo '
';
+ }
+ echo '
';
}
- // Close cURL session
- curl_close($ch);
} else {
echo "No group specified.
";
}