quiniela-sembradores-frontend/lib/api/auth.ts

70 lines
1.7 KiB
TypeScript
Raw Normal View History

import {apiClient} from './client';
const AUTH_ENDPOINTS = {
login: process.env.NEXT_PUBLIC_AUTH_LOGIN_PATH ?? '/api/auth/login',
register: process.env.NEXT_PUBLIC_AUTH_REGISTER_PATH ?? '/api/auth/register',
logout: process.env.NEXT_PUBLIC_AUTH_LOGOUT_PATH ?? '/api/auth/logout',
user: process.env.NEXT_PUBLIC_AUTH_USER_PATH ?? '/api/auth/user',
};
export type AuthUser = {
id: number;
name?: string;
username?: string;
first_name?: string;
last_name?: string;
email: string;
phone?: string;
};
export type LoginPayload = {
email: string;
password: string;
remember?: boolean;
};
export type RegisterPayload = {
username: string;
first_name: string;
last_name: string;
email: string;
phone: string;
password: string;
password_confirmation: string;
};
export const authClient = {
async login(payload: LoginPayload) {
await apiClient.ensureCsrfCookie();
await apiClient.post(AUTH_ENDPOINTS.login, payload, {
skipAuthRedirect: true,
});
return apiClient.get<AuthUser>(AUTH_ENDPOINTS.user, {
skipAuthRedirect: true,
});
},
async register(payload: RegisterPayload) {
await apiClient.ensureCsrfCookie();
await apiClient.post(AUTH_ENDPOINTS.register, payload, {
skipAuthRedirect: true
});
return apiClient.get<AuthUser>(AUTH_ENDPOINTS.user, {
skipAuthRedirect: true
});
},
async logout() {
await apiClient.ensureCsrfCookie();
await apiClient.post<void>(AUTH_ENDPOINTS.logout);
},
async me() {
return apiClient.get<AuthUser>(AUTH_ENDPOINTS.user, {
skipAuthRedirect: true,
});
}
};