mirror of
https://github.com/R0m1k3/podcastic.git
synced 2026-10-23 23:18:05 +02:00
67 lines
1.5 KiB
TypeScript
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');
|
|
},
|
|
};
|