support linking OAuth 2.0 user to logged-in users

This commit is contained in:
MaysWind
2025-10-31 01:22:47 +08:00
parent 8a0777be4c
commit b690316aa7
24 changed files with 172 additions and 44 deletions
+17 -5
View File
@@ -258,26 +258,35 @@ export default {
return axios.post<ApiResponse<AuthResponse>>('2fa/authorize.json', {
passcode: passcode
}, {
noAuth: true,
headers: {
Authorization: `Bearer ${token}`
}
});
} as ApiRequestConfig);
},
authorize2FAByBackupCode: ({ recoveryCode, token }: { recoveryCode: string, token: string }): ApiResponsePromise<AuthResponse> => {
return axios.post<ApiResponse<AuthResponse>>('2fa/recovery.json', {
recoveryCode: recoveryCode
}, {
noAuth: true,
headers: {
Authorization: `Bearer ${token}`
}
});
} as ApiRequestConfig);
},
authorizeOAuth2: ({ req, token }: { req: OAuth2CallbackLoginRequest, token: string }): ApiResponsePromise<AuthResponse> => {
authorizeOAuth2: ({ password, passcode, callbackToken }: { password?: string, passcode?: string, callbackToken: string }): ApiResponsePromise<AuthResponse> => {
const req: OAuth2CallbackLoginRequest = {
password,
passcode,
token: getCurrentToken() || undefined
};
return axios.post<ApiResponse<AuthResponse>>('oauth2/authorize.json', req, {
noAuth: true,
headers: {
Authorization: `Bearer ${token}`
Authorization: `Bearer ${callbackToken}`
}
});
} as ApiRequestConfig);
},
register: (req: UserRegisterRequest): ApiResponsePromise<RegisterResponse> => {
return axios.post<ApiResponse<RegisterResponse>>('register.json', req);
@@ -718,6 +727,9 @@ export default {
generateOAuth2LoginUrl: (platform: 'mobile' | 'desktop', clientSessionId: string): string => {
return `${getBasePath()}/oauth2/login?platform=${platform}&client_session_id=${clientSessionId}`;
},
generateOAuth2LinkUrl: (platform: 'mobile' | 'desktop', clientSessionId: string): string => {
return `${getBasePath()}/oauth2/login?platform=${platform}&client_session_id=${clientSessionId}&token=${getCurrentToken()}`;
},
generateQrCodeUrl: (qrCodeName: string): string => {
return `${getBasePath()}${BASE_QRCODE_PATH}/${qrCodeName}.png`;
},