42 lines
1.4 KiB
TypeScript
42 lines
1.4 KiB
TypeScript
import { ApiResponse, LoginRequest, LoginResponseData, UserProfile, TenantContextResponse } from "@/types/api";
|
|
import { apiClient, unwrap } from "./api";
|
|
|
|
export async function login(request: LoginRequest, tenantId: string): Promise<LoginResponseData> {
|
|
const response = await apiClient.post<ApiResponse<LoginResponseData>>(
|
|
"/api/auth/login",
|
|
request,
|
|
{
|
|
headers: { "X-Tenant-Id": tenantId }
|
|
}
|
|
);
|
|
const payload = response.data;
|
|
if (!payload.success) {
|
|
throw new Error(payload.message);
|
|
}
|
|
return payload.data;
|
|
}
|
|
|
|
export async function refreshToken(refreshToken: string) {
|
|
const response = await apiClient.post<ApiResponse<LoginResponseData>>("/api/auth/refresh", {
|
|
refreshToken
|
|
});
|
|
const payload = response.data;
|
|
if (!payload.success) throw new Error(payload.message);
|
|
return payload.data;
|
|
}
|
|
|
|
export async function logout() {
|
|
await unwrap<null>(apiClient.post<ApiResponse<null>>("/api/auth/logout"));
|
|
}
|
|
|
|
export async function getCurrentUser(): Promise<ApiResponse<UserProfile>> {
|
|
const response = await apiClient.get<ApiResponse<UserProfile>>("/api/users/me");
|
|
return response.data;
|
|
}
|
|
|
|
export async function getTenantContext(): Promise<TenantContextResponse> {
|
|
const response = await apiClient.get<ApiResponse<TenantContextResponse>>("/api/tenant/context");
|
|
if (!response.data.success) throw new Error(response.data.message);
|
|
return response.data.data;
|
|
}
|