// shared/lib/auth/user-sync.ts — 用户同步工具(OIDC userinfo → 本地 SQLite) import type { OidcUserinfo } from './types' export interface UserSyncStore { getUser(username: string): { id: number; role: string } | null createUser(username: string, displayName: string, email: string): { id: number; role: string } updateUser(username: string, displayName: string, email: string): void } // 首次 OIDC 登录时自动创建本地用户记录,已存在则更新信息 export function syncOidcUser(store: UserSyncStore, userinfo: OidcUserinfo): { id: number; role: string; isNew: boolean } { const username = userinfo.preferred_username const displayName = userinfo.name || username const email = userinfo.email || '' const existing = store.getUser(username) if (existing) { store.updateUser(username, displayName, email) return { id: existing.id, role: existing.role, isNew: false } } const created = store.createUser(username, displayName, email) return { id: created.id, role: created.role || 'viewer', isNew: true } }