diff --git a/vehicle-data-platform/apps/web/src/v2/pages/UsersPage.test.tsx b/vehicle-data-platform/apps/web/src/v2/pages/UsersPage.test.tsx index d02c3e6c..a12b2eea 100644 --- a/vehicle-data-platform/apps/web/src/v2/pages/UsersPage.test.tsx +++ b/vehicle-data-platform/apps/web/src/v2/pages/UsersPage.test.tsx @@ -65,6 +65,7 @@ test('deduplicates vehicle candidates by VIN and renders granted vehicles plate expect(directoryMetrics).toHaveTextContent('车辆授权1当前范围合计'); expect(customer).toHaveClass('semi-button', 'v2-user-list-item'); expect(customer.closest('.semi-list-item')).toHaveClass('v2-user-list-row'); + expect(customer.querySelector('.v2-user-provider-tag')).toHaveTextContent('本地'); expect(customer).toHaveAttribute('aria-pressed', 'false'); expect(customer).toHaveAttribute('aria-expanded', 'false'); expect(document.querySelector('.v2-user-editor-sidesheet')).not.toBeInTheDocument(); diff --git a/vehicle-data-platform/apps/web/src/v2/pages/UsersPage.tsx b/vehicle-data-platform/apps/web/src/v2/pages/UsersPage.tsx index 16dd1976..e4b790c2 100644 --- a/vehicle-data-platform/apps/web/src/v2/pages/UsersPage.tsx +++ b/vehicle-data-platform/apps/web/src/v2/pages/UsersPage.tsx @@ -113,6 +113,12 @@ function accessBadgeColor(color: CustomerAccessState['color']): WorkspaceSideShe return color; } +function authProviderMeta(provider?: string) { + const normalized = provider?.trim(); + if (!normalized || normalized === 'local') return { label: '本地', color: 'grey' as const, title: '本地账号' }; + return { label: normalized, color: 'cyan' as const, title: `外部身份源:${normalized}` }; +} + export default function UsersPage() { const queryClient = useQueryClient(); const mobileLayout = useMobileLayout(); @@ -545,6 +551,7 @@ export default function UsersPage() { emptyContent={} renderItem={(user) => { const accessState = customerAccessState(user.status, user.menuKeys.length, user.vehicles.length); + const authProvider = authProviderMeta(user.authProvider); return