imeeting/frontend/src/api/auth.ts

50 lines
1.2 KiB
TypeScript
Raw Normal View History

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;
}