50 lines
1.2 KiB
TypeScript
50 lines
1.2 KiB
TypeScript
|
|
import http from "./http";
|
|||
|
|
|
|||
|
|
export interface CaptchaResponse {
|
|||
|
|
captchaId: string;
|
|||
|
|
imageBase64: string;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
export interface TokenResponse {
|
|||
|
|
accessToken: string;
|
|||
|
|
refreshToken: string;
|
|||
|
|
accessExpiresInMinutes: number;
|
|||
|
|
refreshExpiresInDays: number;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
export interface LoginPayload {
|
|||
|
|
username: string;
|
|||
|
|
password: string;
|
|||
|
|
captchaId: string;
|
|||
|
|
captchaCode: string;
|
|||
|
|
deviceCode?: string;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
export interface DeviceCodePayload {
|
|||
|
|
username: string;
|
|||
|
|
password: string;
|
|||
|
|
captchaId: string;
|
|||
|
|
captchaCode: string;
|
|||
|
|
deviceName?: string;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
export async function fetchCaptcha() {
|
|||
|
|
const resp = await http.get("/auth/captcha");
|
|||
|
|
return resp.data.data as CaptchaResponse;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
export async function login(payload: LoginPayload) {
|
|||
|
|
const resp = await http.post("/auth/login", payload);
|
|||
|
|
return resp.data.data as TokenResponse;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
export async function createDeviceCode(payload: DeviceCodePayload) {
|
|||
|
|
const resp = await http.post("/auth/device-code", payload);
|
|||
|
|
return resp.data.data as string;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
export async function refreshToken(refreshToken: string) {
|
|||
|
|
const resp = await http.post("/auth/refresh", { refreshToken });
|
|||
|
|
return resp.data.data as TokenResponse;
|
|||
|
|
}
|