72 lines
2.9 KiB
TypeScript
72 lines
2.9 KiB
TypeScript
import type { AxiosResponse } from "axios";
|
|
import api, { apiGet, apiPatch, apiPost } from "./axios";
|
|
import type {
|
|
UserMeResponse,
|
|
LoginRequest,
|
|
DevLoginRequest,
|
|
LoginResponse,
|
|
LoginKeyResponse,
|
|
RegisterRequest,
|
|
EmailAvailabilityResponse,
|
|
EmailDomainsResponse,
|
|
EmailCodeVerifyResponse,
|
|
PasswordResetCodeVerifyResponse,
|
|
PasswordResetRequest,
|
|
PasswordResetTokenRequest,
|
|
} from "../types/api";
|
|
|
|
export const login = (payload: LoginRequest): Promise<AxiosResponse<LoginResponse>> =>
|
|
apiPost<LoginResponse>("/api/v1/auth/login", payload);
|
|
|
|
export const devLogin = (payload: DevLoginRequest): Promise<AxiosResponse<LoginResponse>> =>
|
|
apiPost<LoginResponse>("/api/v1/auth/dev-login", payload);
|
|
|
|
export const getLoginKey = (): Promise<AxiosResponse<LoginKeyResponse>> =>
|
|
apiGet<LoginKeyResponse>("/api/v1/auth/login-key");
|
|
|
|
export const fetchMe = (): Promise<AxiosResponse<UserMeResponse>> => apiGet<UserMeResponse>("/api/v1/auth/me");
|
|
|
|
export const fetchEmailDomains = (): Promise<AxiosResponse<EmailDomainsResponse>> =>
|
|
apiGet<EmailDomainsResponse>("/api/v1/auth/email-domains");
|
|
|
|
export const register = (payload: RegisterRequest): Promise<AxiosResponse<{ message: string }>> =>
|
|
apiPost("/api/v1/auth/register", payload);
|
|
|
|
export const checkEmailAvailability = (email: string): Promise<AxiosResponse<EmailAvailabilityResponse>> =>
|
|
apiGet<EmailAvailabilityResponse>("/api/v1/auth/register/email-availability", { params: { email } });
|
|
|
|
export const sendRegisterEmailCode = (email: string): Promise<AxiosResponse<{ message: string }>> =>
|
|
apiPost("/api/v1/auth/register/email-code/send", { email });
|
|
|
|
export const verifyRegisterEmailCode = (email: string, code: string): Promise<AxiosResponse<EmailCodeVerifyResponse>> =>
|
|
apiPost<EmailCodeVerifyResponse>("/api/v1/auth/register/email-code/verify", { email, code });
|
|
|
|
export const sendPasswordResetEmailCode = (email: string): Promise<AxiosResponse<{ message: string }>> =>
|
|
apiPost("/api/v1/auth/password-reset/email-code/send", { email });
|
|
|
|
export const verifyPasswordResetEmailCode = (
|
|
email: string,
|
|
code: string
|
|
): Promise<AxiosResponse<PasswordResetCodeVerifyResponse>> =>
|
|
apiPost<PasswordResetCodeVerifyResponse>("/api/v1/auth/password-reset/email-code/verify", { email, code });
|
|
|
|
export const sendPasswordResetLink = (email: string): Promise<AxiosResponse<{ message: string }>> =>
|
|
apiPost("/api/v1/auth/password-reset-link/send", { email });
|
|
|
|
export const resetPassword = (payload: PasswordResetRequest): Promise<AxiosResponse<{ message: string }>> =>
|
|
apiPost("/api/v1/auth/password-reset", payload);
|
|
|
|
export const resetPasswordWithToken = (
|
|
payload: PasswordResetTokenRequest
|
|
): Promise<AxiosResponse<{ message: string }>> =>
|
|
apiPost("/api/v1/auth/password-reset-link", payload);
|
|
|
|
export const updateProfile = (payload: {
|
|
full_name?: string;
|
|
clinical_department?: string;
|
|
current_password?: string;
|
|
password?: string;
|
|
}) => apiPatch<UserMeResponse>("/api/v1/auth/me", payload);
|
|
|
|
export default api;
|