Files
UTMS-NG-FE/services/auth.ts
2026-04-21 06:30:48 +07:00

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