Files
podcastic/frontend/src/services/authService.ts
T

67 lines
1.5 KiB
TypeScript

import api from './api';
export interface User {
_id: string;
email: string;
username: string;
avatar?: string;
preferences: {
defaultPlaybackSpeed: number;
theme: 'light' | 'dark';
language: string;
};
}
export interface AuthResponse {
message: string;
user: User;
tokens: {
accessToken: string;
refreshToken: string;
};
}
export const authService = {
register: async (email: string, password: string, username: string): Promise<AuthResponse> => {
const response = await api.post('/auth/register', {
email,
password,
username,
});
return response.data;
},
login: async (email: string, password: string): Promise<AuthResponse> => {
const response = await api.post('/auth/login', {
email,
password,
});
return response.data;
},
getMe: async (): Promise<{ user: User }> => {
const response = await api.get('/auth/me');
return response.data;
},
logout: async (): Promise<{ message: string }> => {
const response = await api.post('/auth/logout');
return response.data;
},
setTokens: (accessToken: string, refreshToken: string) => {
localStorage.setItem('accessToken', accessToken);
localStorage.setItem('refreshToken', refreshToken);
},
getTokens: () => ({
accessToken: localStorage.getItem('accessToken'),
refreshToken: localStorage.getItem('refreshToken'),
}),
clearTokens: () => {
localStorage.removeItem('accessToken');
localStorage.removeItem('refreshToken');
},
};