From 31ee06fa3adb22dbe928acb9eb1f1df114eddb30 Mon Sep 17 00:00:00 2001 From: Mark Gregory Date: Wed, 26 Aug 2026 08:15:05 +0100 Subject: [PATCH] users menu listing --- ...6_080000_ensure_initial_helpdesk_admin.php | 47 +++++++++++++++++ .../views/layouts/app/sidebar.blade.php | 50 ++++++++++++++----- 2 files changed, 85 insertions(+), 12 deletions(-) create mode 100644 Modules/UserManagement/Database/Migrations/2026_08_26_080000_ensure_initial_helpdesk_admin.php diff --git a/Modules/UserManagement/Database/Migrations/2026_08_26_080000_ensure_initial_helpdesk_admin.php b/Modules/UserManagement/Database/Migrations/2026_08_26_080000_ensure_initial_helpdesk_admin.php new file mode 100644 index 0000000..9c24f9a --- /dev/null +++ b/Modules/UserManagement/Database/Migrations/2026_08_26_080000_ensure_initial_helpdesk_admin.php @@ -0,0 +1,47 @@ +where('helpdesk_admin', true)->exists()) { + return; + } + + // Bootstrap the oldest account as the initial administrator. + // From this point onward administrators are managed through User Management. + $initialUserId = DB::table('users')->orderBy('id')->value('id'); + + if ($initialUserId === null) { + return; + } + + DB::table('users') + ->where('id', $initialUserId) + ->update([ + 'helpdesk_admin' => true, + 'helpdesk_agent' => true, + 'updated_at' => now(), + ]); + } + + public function down(): void + { + // Intentionally non-destructive. Never silently remove an administrator. + } +}; diff --git a/resources/themes/backend/views/layouts/app/sidebar.blade.php b/resources/themes/backend/views/layouts/app/sidebar.blade.php index 5edc30b..19b1fdc 100644 --- a/resources/themes/backend/views/layouts/app/sidebar.blade.php +++ b/resources/themes/backend/views/layouts/app/sidebar.blade.php @@ -4,7 +4,10 @@ @php $user = auth()->user(); - $isAdmin = (method_exists($user, 'isHelpdeskAdmin') && $user->isHelpdeskAdmin()) || (method_exists($user, 'isAdmin') && $user->isAdmin()) || (bool) ($user->helpdesk_admin ?? false); + $isAdmin = + (bool) ($user?->helpdesk_admin ?? false) + || ($user && method_exists($user, 'isHelpdeskAdmin') && $user->isHelpdeskAdmin()) + || ($user && method_exists($user, 'isAdmin') && $user->isAdmin()); $roleLabel = $isAdmin ? 'Administrator' : ((method_exists($user, 'isHelpdeskAgent') && $user->isHelpdeskAgent()) || (bool) ($user->helpdesk_agent ?? false) ? 'Agent' : 'User'); @endphp
@@ -39,20 +42,37 @@