2026-02-10 09:48:44 +00:00
|
|
|
|
import http from "./http";
|
|
|
|
|
|
|
|
|
|
|
|
export interface CaptchaResponse {
|
|
|
|
|
|
captchaId: string;
|
|
|
|
|
|
imageBase64: string;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-26 05:53:58 +00:00
|
|
|
|
export interface TenantInfo {
|
|
|
|
|
|
tenantId: number;
|
|
|
|
|
|
tenantCode: string;
|
|
|
|
|
|
tenantName: string;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-10 09:48:44 +00:00
|
|
|
|
export interface TokenResponse {
|
|
|
|
|
|
accessToken: string;
|
|
|
|
|
|
refreshToken: string;
|
|
|
|
|
|
accessExpiresInMinutes: number;
|
|
|
|
|
|
refreshExpiresInDays: number;
|
2026-02-26 05:53:58 +00:00
|
|
|
|
availableTenants?: TenantInfo[];
|
2026-02-10 09:48:44 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
export interface LoginPayload {
|
|
|
|
|
|
username: string;
|
|
|
|
|
|
password: string;
|
2026-02-12 07:51:03 +00:00
|
|
|
|
tenantCode?: string;
|
2026-02-11 05:44:31 +00:00
|
|
|
|
captchaId?: string;
|
|
|
|
|
|
captchaCode?: string;
|
2026-02-10 09:48:44 +00:00
|
|
|
|
deviceCode?: string;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
export interface DeviceCodePayload {
|
|
|
|
|
|
username: string;
|
|
|
|
|
|
password: string;
|
2026-02-11 05:44:31 +00:00
|
|
|
|
captchaId?: string;
|
|
|
|
|
|
captchaCode?: string;
|
2026-02-10 09:48:44 +00:00
|
|
|
|
deviceName?: string;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
export async function fetchCaptcha() {
|
2026-03-17 07:31:09 +00:00
|
|
|
|
const resp = await http.get("/sys/auth/captcha");
|
2026-02-10 09:48:44 +00:00
|
|
|
|
return resp.data.data as CaptchaResponse;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
export async function login(payload: LoginPayload) {
|
2026-03-17 07:31:09 +00:00
|
|
|
|
const resp = await http.post("/sys/auth/login", payload);
|
2026-02-10 09:48:44 +00:00
|
|
|
|
return resp.data.data as TokenResponse;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
export async function createDeviceCode(payload: DeviceCodePayload) {
|
2026-03-17 07:31:09 +00:00
|
|
|
|
const resp = await http.post("/sys/auth/device-code", payload);
|
2026-02-10 09:48:44 +00:00
|
|
|
|
return resp.data.data as string;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
export async function refreshToken(refreshToken: string) {
|
2026-03-17 07:31:09 +00:00
|
|
|
|
const resp = await http.post("/sys/auth/refresh", { refreshToken });
|
2026-02-10 09:48:44 +00:00
|
|
|
|
return resp.data.data as TokenResponse;
|
|
|
|
|
|
}
|
2026-02-26 05:53:58 +00:00
|
|
|
|
|
|
|
|
|
|
export async function switchTenant(tenantId: number) {
|
2026-03-17 07:31:09 +00:00
|
|
|
|
const resp = await http.post(`/sys/auth/switch-tenant?tenantId=${tenantId}`);
|
2026-02-26 05:53:58 +00:00
|
|
|
|
return resp.data.data as TokenResponse;
|
|
|
|
|
|
}
|