Files
vue3-element-admin/src/api/auth/index.ts
2026-06-18 18:38:12 +08:00

68 lines
1.5 KiB
TypeScript

import request from "@/utils/request";
import type { CaptchaInfo, LoginRequest, LoginResult } from "./types";
const AUTH_BASE_URL = "/api/v1/auth";
const AuthAPI = {
login(data: LoginRequest) {
const payload: Pick<
LoginRequest,
"username" | "password" | "captchaId" | "captchaCode" | "tenantId"
> = {
username: data.username,
password: data.password,
captchaId: data.captchaId,
captchaCode: data.captchaCode,
};
// 仅多租户场景传入 tenantId
if (typeof data.tenantId !== "undefined") {
payload.tenantId = data.tenantId;
}
return request<unknown, LoginResult>({
url: `${AUTH_BASE_URL}/login`,
method: "post",
data: payload,
});
},
switchTenant(tenantId: number) {
return request<unknown, LoginResult>({
url: `${AUTH_BASE_URL}/switch-tenant`,
method: "post",
params: { tenantId },
});
},
refreshToken(refreshToken: string) {
return request<unknown, LoginResult>({
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<unknown, CaptchaInfo>({
url: `${AUTH_BASE_URL}/captcha`,
method: "get",
});
},
};
export default AuthAPI;
// 重导出类型
export * from "./types";