From a2986c631b6882f70e6590a8f9ac47a3e0a14a37 Mon Sep 17 00:00:00 2001 From: root Date: Sat, 12 Jul 2025 19:02:15 +0800 Subject: [PATCH] fix --- src/services/pythonCliAuth.ts | 67 +++++++++++++++-------------------- 1 file changed, 29 insertions(+), 38 deletions(-) diff --git a/src/services/pythonCliAuth.ts b/src/services/pythonCliAuth.ts index 2d4b9aa..d6f0548 100644 --- a/src/services/pythonCliAuth.ts +++ b/src/services/pythonCliAuth.ts @@ -30,26 +30,26 @@ export interface UserProfile { isActive: boolean; } -export interface AuthResponse { +export interface AuthResponse { success: boolean; message: string; - data?: any; + data?: AuthResponseData; output?: string; error?: string; } -export interface PythonCliAuthResponse { +export interface AuthResponseData { success: boolean; message: string; - data?: { - user?: UserProfile; - token?: string; - expires_at?: string; - }; - output?: string; - error?: string; + data: T; } +export type PythonCliAuthResponse = AuthResponse<{ + user?: UserProfile; + token?: string; + expires_at?: string; +}>; + class PythonCliAuth { private token: string | null = null; private user: UserProfile | null = null; @@ -139,40 +139,31 @@ class PythonCliAuth { display_name: credentials.displayName, } }); - console.log({ response }) if (!response.success) { throw new Error(response.error || response.message || 'Registration failed'); } - + const data = response.data; // 解析输出中的用户信息和token - if (response.success && response.output) { - // 尝试从输出中解析JSON - const jsonMatch = response.output.match(/\{[\s\S]*\}/); - if (jsonMatch) { - try { - const authData = JSON.parse(jsonMatch[0]); - if (authData.success && authData.data?.user && authData.data?.token) { - this.token = authData.data.token; - this.user = { - id: authData.data.user.id, - username: authData.data.user.username, - displayName: authData.data.user.display_name, - email: authData.data.user.email, - avatarUrl: authData.data.user.avatar_url, - createTime: authData.data.user.created_at, - updateTime: authData.data.user.updated_at, - lastLogin: authData.data.user.last_login, - isActive: authData.data.user.is_active - }; + if (data && data.success) { + const authData = data; + if (authData.success && authData.data?.user && authData.data?.token) { + this.token = authData.data.token; + this.user = { + id: authData.data.user.id, + username: authData.data.user.username, + displayName: authData.data.user.displayName, + email: authData.data.user.email, + avatarUrl: authData.data.user.avatarUrl, + createTime: authData.data.user.createTime, + updateTime: authData.data.user.updateTime, + lastLogin: authData.data.user.lastLogin, + isActive: authData.data.user.isActive + }; - // 保存到localStorage - this.saveAuthToStorage(); + // 保存到localStorage + this.saveAuthToStorage(); - return this.user; - } - } catch (parseError) { - console.error('Failed to parse auth response JSON:', parseError); - } + return this.user; } }