This commit is contained in:
root 2025-07-12 19:02:15 +08:00
parent 04fb72c14c
commit a2986c631b
1 changed files with 29 additions and 38 deletions

View File

@ -30,25 +30,25 @@ export interface UserProfile {
isActive: boolean; isActive: boolean;
} }
export interface AuthResponse { export interface AuthResponse<T> {
success: boolean; success: boolean;
message: string; message: string;
data?: any; data?: AuthResponseData<T>;
output?: string; output?: string;
error?: string; error?: string;
} }
export interface PythonCliAuthResponse { export interface AuthResponseData<T> {
success: boolean; success: boolean;
message: string; message: string;
data?: { data: T;
}
export type PythonCliAuthResponse = AuthResponse<{
user?: UserProfile; user?: UserProfile;
token?: string; token?: string;
expires_at?: string; expires_at?: string;
}; }>;
output?: string;
error?: string;
}
class PythonCliAuth { class PythonCliAuth {
private token: string | null = null; private token: string | null = null;
@ -139,30 +139,25 @@ class PythonCliAuth {
display_name: credentials.displayName, display_name: credentials.displayName,
} }
}); });
console.log({ response })
if (!response.success) { if (!response.success) {
throw new Error(response.error || response.message || 'Registration failed'); throw new Error(response.error || response.message || 'Registration failed');
} }
const data = response.data;
// 解析输出中的用户信息和token // 解析输出中的用户信息和token
if (response.success && response.output) { if (data && data.success) {
// 尝试从输出中解析JSON const authData = data;
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) { if (authData.success && authData.data?.user && authData.data?.token) {
this.token = authData.data.token; this.token = authData.data.token;
this.user = { this.user = {
id: authData.data.user.id, id: authData.data.user.id,
username: authData.data.user.username, username: authData.data.user.username,
displayName: authData.data.user.display_name, displayName: authData.data.user.displayName,
email: authData.data.user.email, email: authData.data.user.email,
avatarUrl: authData.data.user.avatar_url, avatarUrl: authData.data.user.avatarUrl,
createTime: authData.data.user.created_at, createTime: authData.data.user.createTime,
updateTime: authData.data.user.updated_at, updateTime: authData.data.user.updateTime,
lastLogin: authData.data.user.last_login, lastLogin: authData.data.user.lastLogin,
isActive: authData.data.user.is_active isActive: authData.data.user.isActive
}; };
// 保存到localStorage // 保存到localStorage
@ -170,10 +165,6 @@ class PythonCliAuth {
return this.user; return this.user;
} }
} catch (parseError) {
console.error('Failed to parse auth response JSON:', parseError);
}
}
} }
throw new Error(response.error || response.message || 'Registration failed'); throw new Error(response.error || response.message || 'Registration failed');