From d5f5631287e43347e1f94b53caa1f26c6c46926e Mon Sep 17 00:00:00 2001 From: Weilong Liao <37870767+Soulter@users.noreply.github.com> Date: Wed, 17 Jun 2026 23:15:03 +0800 Subject: [PATCH] fix: prefer v1 auth with legacy recovery fallback --- dashboard/src/api/v1.ts | 31 ++++++++--- .../shared/UpgradeRecoveryDialog.vue | 54 ++++++++++++++++--- .../full/vertical-header/VerticalHeader.vue | 6 ++- 3 files changed, 74 insertions(+), 17 deletions(-) diff --git a/dashboard/src/api/v1.ts b/dashboard/src/api/v1.ts index 29d244d38..0cdb2d838 100644 --- a/dashboard/src/api/v1.ts +++ b/dashboard/src/api/v1.ts @@ -180,7 +180,7 @@ function typed(response: Promise): V1Response { return response as unknown as V1Response; } -function isLegacyFallbackError(error: unknown): boolean { +export function isLegacyFallbackError(error: unknown): boolean { const axiosError = error as { response?: { status?: number; data?: { message?: string } | string }; message?: string; @@ -556,25 +556,40 @@ export const providerApi = { export const authApi = { login(payload: LoginRequest) { - return httpClient.post>('/api/auth/login', payload); + return withLegacyFallback(openApiV1.login({ body: payload }), () => + httpClient.post>('/api/auth/login', payload), + ); }, logout() { - return httpClient.post>('/api/auth/logout'); + return withLegacyFallback(openApiV1.logout(), () => + httpClient.post>('/api/auth/logout'), + ); }, setupStatus() { - return httpClient.get>('/api/auth/setup-status'); + return withLegacyFallback(openApiV1.getAuthSetupStatus(), () => + httpClient.get>('/api/auth/setup-status'), + ); }, setup(payload: SetupAuthRequest) { - return httpClient.post>('/api/auth/setup', payload); + return withLegacyFallback(openApiV1.setupAuth({ body: payload }), () => + httpClient.post>('/api/auth/setup', payload), + ); }, setupTotp(payload?: TotpSetupRequest) { - return httpClient.post>('/api/auth/totp/setup', payload); + return withLegacyFallback(openApiV1.setupTotp({ body: payload }), () => + httpClient.post>('/api/auth/totp/setup', payload), + ); }, recoverTotp() { - return httpClient.post>('/api/auth/totp/recovery'); + return withLegacyFallback(openApiV1.recoverTotp(), () => + httpClient.post>('/api/auth/totp/recovery'), + ); }, updateAccount(payload: UpdateAccountRequest) { - return httpClient.post>('/api/auth/account/edit', payload); + return withLegacyFallback( + openApiV1.updateAuthAccount({ body: payload }), + () => httpClient.post>('/api/auth/account/edit', payload), + ); }, }; diff --git a/dashboard/src/components/shared/UpgradeRecoveryDialog.vue b/dashboard/src/components/shared/UpgradeRecoveryDialog.vue index 5a1b65f6b..fdb8ecf31 100644 --- a/dashboard/src/components/shared/UpgradeRecoveryDialog.vue +++ b/dashboard/src/components/shared/UpgradeRecoveryDialog.vue @@ -48,10 +48,11 @@