70 lines
1.7 KiB
TypeScript
70 lines
1.7 KiB
TypeScript
|
|
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,
|
||
|
|
});
|
||
|
|
}
|
||
|
|
};
|