Files
vue3-element-admin/src/api/auth/index.ts

70 lines
1.6 KiB
TypeScript

import request from "@/utils/request";
import type { LoginRequest, LoginResponse, CaptchaInfo } from "./types";
const AUTH_BASE_URL = "/api/v1/auth";
const AuthAPI = {
/** 登录接口*/
login(data: LoginRequest) {
const payload: Record<string, any> = {
username: data.username,
password: data.password,
captchaId: data.captchaId,
captchaCode: data.captchaCode,
};
// tenantId 可选,仅在提供时包含(多租户功能)
if (typeof data.tenantId !== "undefined") {
payload.tenantId = data.tenantId;
}
return request<any, LoginResponse>({
url: `${AUTH_BASE_URL}/login`,
method: "post",
data: payload,
});
},
/** 切换租户(平台用户) - 返回新的 token */
switchTenant(tenantId: number) {
return request<any, LoginResponse>({
url: `${AUTH_BASE_URL}/switch-tenant`,
method: "post",
params: { tenantId },
});
},
/** 刷新 token 接口*/
refreshToken(refreshToken: string) {
return request<any, LoginResponse>({
url: `${AUTH_BASE_URL}/refresh-token`,
method: "post",
params: { refreshToken },
headers: {
Authorization: "no-auth",
},
});
},
/** 退出登录接口 */
logout() {
return request({
url: `${AUTH_BASE_URL}/logout`,
method: "delete",
});
},
/** 获取验证码接口*/
getCaptcha() {
return request<any, CaptchaInfo>({
url: `${AUTH_BASE_URL}/captcha`,
method: "get",
});
},
};
export default AuthAPI;
// 重导出类型
export * from "./types";