geo/frontend/lib/api/auth.ts

60 lines
1.7 KiB
TypeScript

import { fetchWithAuth } from "./client";
export const authApi = {
register: (data: { name: string; email: string; password: string }) =>
fetchWithAuth("/api/v1/auth/register", {
method: "POST",
body: JSON.stringify(data),
}),
login: (data: { email: string; password: string }) =>
fetchWithAuth("/api/v1/auth/login", {
method: "POST",
body: JSON.stringify(data),
}),
getMe: (token: string) => fetchWithAuth("/api/v1/auth/me", {}, token),
forgotPassword: (email: string) =>
fetchWithAuth("/api/v1/auth/forgot-password", {
method: "POST",
body: JSON.stringify({ email }),
}),
resetPassword: (token: string, newPassword: string) =>
fetchWithAuth("/api/v1/auth/reset-password", {
method: "POST",
body: JSON.stringify({ token, new_password: newPassword }),
}),
verifyEmail: (email: string, code: string) =>
fetchWithAuth("/api/v1/auth/verify-email", {
method: "POST",
body: JSON.stringify({ email, code }),
}),
resendVerification: (email: string) =>
fetchWithAuth("/api/v1/auth/resend-verification", {
method: "POST",
body: JSON.stringify({ email }),
}),
changePassword: (token: string, oldPassword: string, newPassword: string) =>
fetchWithAuth(
"/api/v1/auth/change-password",
{
method: "PUT",
body: JSON.stringify({
old_password: oldPassword,
new_password: newPassword,
}),
},
token
),
updateProfile: (
token: string,
data: { name?: string; avatar_url?: string }
) =>
fetchWithAuth(
"/api/v1/auth/profile",
{
method: "PUT",
body: JSON.stringify(data),
},
token
),
};