mirror of
https://github.com/fawney19/Aether.git
synced 2026-10-10 11:19:50 +08:00
fix: preserve provider auth metadata
This commit is contained in:
@@ -1352,6 +1352,7 @@ function parseImportText(text: string): {
|
||||
browser_profile?: string
|
||||
user_id?: string
|
||||
account_name?: string
|
||||
headers?: Record<string, string>
|
||||
} | null {
|
||||
const trimmed = text.trim()
|
||||
if (!trimmed) return null
|
||||
@@ -1422,7 +1423,14 @@ function parseImportText(text: string): {
|
||||
const normalizedSessionToken = typeof sessionToken === 'string' && sessionToken.trim()
|
||||
? sessionToken.trim()
|
||||
: (typeof sessionTokenCamel === 'string' && sessionTokenCamel.trim() ? sessionTokenCamel.trim() : undefined)
|
||||
const importedAccessToken = normalizedAccessToken ?? grokSsoToken ?? normalizedSessionToken
|
||||
const normalizedHeaders = normalizeHeadersField(obj.headers)
|
||||
?? normalizeHeadersField(obj.request_headers)
|
||||
?? normalizeHeadersField(obj.requestHeaders)
|
||||
?? normalizeHeadersField(obj.header_overrides)
|
||||
?? normalizeHeadersField(obj.headerOverrides)
|
||||
?? normalizeHeadersField(obj.extra_headers)
|
||||
?? normalizeHeadersField(obj.extraHeaders)
|
||||
const importedAccessToken = normalizedAccessToken ?? grokSsoToken ?? normalizedSessionToken ?? bearerTokenFromHeaders(normalizedHeaders)
|
||||
if (normalizedRefreshToken || importedAccessToken) {
|
||||
return {
|
||||
refresh_token: normalizedRefreshToken,
|
||||
@@ -1441,6 +1449,7 @@ function parseImportText(text: string): {
|
||||
browser_profile: isGrokProvider.value ? normalizeStringField(obj.browser_profile) ?? normalizeStringField(obj.browserProfile) ?? normalizeStringField(obj.browser) ?? normalizeStringField(obj.impersonate) ?? grokCookieImport?.browser_profile : undefined,
|
||||
user_id: normalizeStringField(obj.user_id) ?? normalizeStringField(obj.userId) ?? normalizeStringField(obj.chatgpt_user_id) ?? normalizeStringField(obj.chatgptUserId),
|
||||
account_name: normalizeStringField(obj.account_name) ?? normalizeStringField(obj.accountName),
|
||||
headers: normalizedHeaders,
|
||||
}
|
||||
}
|
||||
return null
|
||||
@@ -1526,6 +1535,34 @@ function normalizeStringField(value: unknown): string | undefined {
|
||||
return typeof value === 'string' && value.trim() ? value.trim() : undefined
|
||||
}
|
||||
|
||||
function normalizeHeadersField(value: unknown): Record<string, string> | undefined {
|
||||
if (typeof value !== 'object' || value === null || Array.isArray(value)) return undefined
|
||||
const headers: Record<string, string> = {}
|
||||
for (const [rawKey, rawValue] of Object.entries(value as Record<string, unknown>)) {
|
||||
const key = rawKey.trim().toLowerCase()
|
||||
if (!key || ['host', 'content-length', 'connection', 'transfer-encoding', 'proxy-authorization'].includes(key)) {
|
||||
continue
|
||||
}
|
||||
let headerValue: string | undefined
|
||||
if (typeof rawValue === 'string') {
|
||||
headerValue = rawValue.trim()
|
||||
} else if (typeof rawValue === 'number' || typeof rawValue === 'boolean') {
|
||||
headerValue = String(rawValue)
|
||||
}
|
||||
if (headerValue) {
|
||||
headers[key] = headerValue
|
||||
}
|
||||
}
|
||||
return Object.keys(headers).length > 0 ? headers : undefined
|
||||
}
|
||||
|
||||
function bearerTokenFromHeaders(headers: Record<string, string> | undefined): string | undefined {
|
||||
const authorization = headers?.authorization?.trim()
|
||||
if (!authorization) return undefined
|
||||
const match = authorization.match(/^bearer\s+(.+)$/i)
|
||||
return match?.[1]?.trim() || undefined
|
||||
}
|
||||
|
||||
function normalizeNumberField(value: unknown): number | undefined {
|
||||
if (typeof value === 'number' && Number.isFinite(value) && value > 0) {
|
||||
return Math.floor(value)
|
||||
|
||||
Reference in New Issue
Block a user