50 lines
1 KiB
TypeScript
50 lines
1 KiB
TypeScript
const BASE_URL = import.meta.env.VITE_API_URL;
|
|
|
|
const makeRequest = async (
|
|
url: string,
|
|
body: object,
|
|
error = "Une erreur est survenue",
|
|
method = "POST"
|
|
) => {
|
|
const response = await fetch(BASE_URL + url, {
|
|
method,
|
|
headers: {
|
|
"Content-Type": "application/json",
|
|
},
|
|
body: JSON.stringify(body),
|
|
});
|
|
|
|
const data = await response.json();
|
|
if (!response.ok) throw new Error(data.error || error);
|
|
return data?.data || data;
|
|
};
|
|
|
|
export const requestLogin = async (email: string, token: string) => {
|
|
return makeRequest(
|
|
"/auth/request",
|
|
{ email, token },
|
|
"Échec de la demande de connexion"
|
|
);
|
|
};
|
|
|
|
export const verifyOtp = async ({
|
|
otpCode,
|
|
email,
|
|
}: {
|
|
otpCode: string;
|
|
email: string;
|
|
}) => {
|
|
return makeRequest(
|
|
"/auth/verify",
|
|
{ email, code: otpCode },
|
|
"Code de vérification invalide"
|
|
);
|
|
};
|
|
|
|
export const sendOtp = async (email: string) => {
|
|
return makeRequest(
|
|
"/auth/send-otp",
|
|
{ email },
|
|
"Échec de l'envoi du code de vérification"
|
|
);
|
|
};
|