Inicjalna wersja systemu zarządzania rezerwacjami (RMS)
SPA zbudowane w React 19 + Vite 8 z pełnym zestawem funkcjonalności: autentykacja z 2FA, kreator rezerwacji, panel admina, analityka, GraphQL (Apollo Client + SchemaLink), React Query, Storybook, testy jednostkowe (Vitest + RTL) i e2e (Playwright).
This commit is contained in:
37
src/api/users.js
Normal file
37
src/api/users.js
Normal file
@@ -0,0 +1,37 @@
|
||||
// [REQ F1] System uwierzytelniania – rejestracja i weryfikacja e-mail
|
||||
// [REQ T5] Obsługa zapytań API – zarządzanie użytkownikami
|
||||
import axios from 'axios';
|
||||
import { API_URL } from '../config';
|
||||
|
||||
const makeToken = () =>
|
||||
Math.random().toString(36).slice(2) + Math.random().toString(36).slice(2);
|
||||
|
||||
export const registerUser = async ({ name, email, password }) => {
|
||||
const { data: existing } = await axios.get(`${API_URL}/users`, { params: { email } });
|
||||
if (existing.length > 0) throw new Error('An account with this email already exists.');
|
||||
|
||||
const verificationToken = makeToken();
|
||||
const { data } = await axios.post(`${API_URL}/users`, {
|
||||
name,
|
||||
email,
|
||||
password,
|
||||
role: 'client',
|
||||
avatarUrl: `https://i.pravatar.cc/150?u=${encodeURIComponent(email)}`,
|
||||
verified: false,
|
||||
verificationToken,
|
||||
});
|
||||
return { user: data, token: verificationToken };
|
||||
};
|
||||
|
||||
export const verifyUser = async (token) => {
|
||||
const { data } = await axios.get(`${API_URL}/users`, {
|
||||
params: { verificationToken: token },
|
||||
});
|
||||
if (!data.length) throw new Error('Invalid or expired verification link.');
|
||||
const user = data[0];
|
||||
await axios.patch(`${API_URL}/users/${user.id}`, {
|
||||
verified: true,
|
||||
verificationToken: null,
|
||||
});
|
||||
return user;
|
||||
};
|
||||
Reference in New Issue
Block a user