, * navigation: list * }>, * agent: ?array{ * id: int, * admin_site_id: int, * path: string, * code: string, * name: string, * depth: int * }, * is_super_admin: bool, * operational_permissions: list, * delegation_ceiling: list * } */ public static function fromAdmin(AdminUser $admin): array { $fresh = $admin->fresh(); $permissionSlugs = $fresh->adminPermissionSlugs(); return [ 'id' => $fresh->id, 'username' => $fresh->username, 'nickname' => $fresh->name, 'email' => $fresh->email, 'permissions' => $permissionSlugs, 'navigation' => AdminAuthorizationRegistry::visibleNavigationItems($permissionSlugs, $fresh), 'agent' => self::agentContext($fresh), 'is_super_admin' => $fresh->isSuperAdmin(), 'operational_permissions' => $permissionSlugs, 'delegation_ceiling' => AgentDelegationAuthorization::delegationLegacySlugsForAdminUser($fresh), ]; } /** * @return array{id: int, admin_site_id: int, path: string, code: string, name: string, depth: int}|null */ private static function agentContext(AdminUser $admin): ?array { if ($admin->isSuperAdmin()) { return null; } $node = $admin->primaryAgentNode(); if (! $node instanceof AgentNode) { return null; } return [ 'id' => (int) $node->id, 'admin_site_id' => (int) $node->admin_site_id, 'path' => (string) $node->path, 'code' => (string) $node->code, 'name' => (string) $node->name, 'depth' => (int) $node->depth, ]; } }