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 @@