From d8a411cc9168b5a221f76457eee620914a616bb8 Mon Sep 17 00:00:00 2001 From: Matt Date: Mon, 10 Nov 2025 17:21:24 -0800 Subject: [PATCH] improving web layout --- files/dashboard/index.php | 70 +++++++++++++++++++++++++++------------ 1 file changed, 48 insertions(+), 22 deletions(-) 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 ""; - foreach ($data as $item) { - echo ""; + 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 "
GPOAD GroupLocal Group
{$item['gpo']}{$item['ad_group']}{$item['local_group']}
"; + ksort($gpoMap, SORT_STRING | SORT_FLAG_CASE); + echo ''; + echo ''; + + 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 ""; + echo ""; + echo ""; + echo ''; + } + echo '
GPOAdministratorsvnc_admin
{$gpoName}{$adminGroups}{$vncGroups}
'; } - // Close cURL session - curl_close($ch); } else { echo "

No group specified.

"; }