corp-mp/src/lib/auth.ts

26 lines
705 B
TypeScript

export function pickToken (payload: any): string {
const first = payload?.data ?? payload
const nested = first?.data && typeof first.data === 'object' && ('token' in first.data || !first.token)
? first.data
: first
const token = nested?.token ?? first?.token ?? payload?.token
return typeof token === 'string' ? token.trim() : ''
}
export async function ensureSessionToken (input: {
token?: string
fetchUserConfig: () => Promise<unknown>
}) {
const existing = String(input.token || '').trim()
if (existing) {
return existing
}
const token = pickToken(await input.fetchUserConfig())
if (!token) {
throw new Error('获取临时登录态失败')
}
return token
}