/
TimurIsm
/
OpenEyes
Обзор
Документация
Войти
/
TimurIsm
/
OpenEyes
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
front/src/http/userAPI.jsx
137 строк
5 KB
TimurIsm
first_commit
16 май 2026, 15:34
16 май 2026, 15:34
4d3f198
Код
Авторство
О чём код?
import { $authHost, $host } from "./index"; import { jwtDecode } from 'jwt-decode'; export const registration = async (email, password) => { try { const {data} = await $host.post('api/user/registration', {email, password, role: 'USER'}) console.log(data); if (data.requiresVerification) { return { requiresVerification: true, message: data.message || 'Проверьте почту для подтверждения.' }; } if (data.token) { localStorage.setItem('token', data.token); return jwtDecode(data.token); } return data; } catch (error) { if (error.response?.status === 429) { throw new Error('Слишком много попыток регистрации! Попробуйте через 15 минут.') } throw new Error(error.response?.data?.message || 'Ошибка регистрации!') } } export const verifyEmail = async (token, userId) => { try { const {data} = await $host.get(`api/user/verify-email?token=${token}&userId=${userId}`); if (data.token) { localStorage.setItem('token', data.token); } return data; } catch (error) { throw new Error(error.response?.data?.message || 'Ошибка подтверждения email!'); } } export const resendVerificationEmail = async (email) => { try { const {data} = await $host.post('api/user/resend-verification', { email }); return data; } catch (error) { throw new Error(error.response?.data?.message || 'Ошибка повторной отправки письма!'); } } export const login = async (email, password) => { try { const {data} = await $host.post('api/user/login', {email, password}) console.log(data); if (data.token) { localStorage.setItem('token', data.token); } if (data.user) { const tokenData = data.token ? jwtDecode(data.token) : {}; return {...tokenData, ...data.user}; } return data.token ? jwtDecode(data.token) : data; } catch (error) { if (error.response?.status === 429) { throw new Error('Слишком много попыток входа! Попробуйте через 15 минут.') } if (error.response?.status === 403 && error.response?.data?.message?.includes('подтвердите')) { throw new Error('Пожалуйста, подтвердите ваш email. Проверьте почту.'); } throw new Error(error.response?.data?.message || 'Ошибка авторизации!') } } export const check = async () => { const token = localStorage.getItem('token'); if (!token) { throw new Error('Токен не найден!'); } const {data} = await $authHost.get('api/user/auth'); localStorage.setItem('token', data.token); if (data.user) { const tokenData = data.token ? jwtDecode(data.token) : {}; return {...tokenData, ...data.user}; } return data.token ? jwtDecode(data.token) : data; }; export const requestPasswordReset = async (email) => { try { const {data} = await $host.post('api/user/request-password-reset', { email }); return data; } catch (error) { throw new Error(error.response?.data?.message || 'Ошибка запроса сброса пароля!'); } } export const resetPassword = async (token, userId, newPassword) => { try { const {data} = await $host.post('api/user/reset-password', { token, userId, newPassword }); return data; } catch (error) { throw new Error(error.response?.data?.message || 'Ошибка сброса пароля!'); } } export const requestAccountDeletion = async () => { try { const {data} = await $authHost.post('api/user/request-account-deletion'); return data; } catch (error) { throw new Error(error.response?.data?.message || 'Ошибка запроса удаления аккаунта!'); } } export const confirmAccountDeletion = async (token, userId) => { try { const {data} = await $host.get(`api/user/confirm-account-deletion?token=${encodeURIComponent(token)}&userId=${encodeURIComponent(userId)}`); return data; } catch (error) { throw new Error(error.response?.data?.message || 'Ошибка подтверждения удаления аккаунта!'); } } export const requestPasswordChange = async (email) => { try { const {data} = await $authHost.post('api/user/request-password-change', { email }); return data; } catch (error) { throw new Error(error.response?.data?.message || 'Ошибка запроса изменения пароля!'); } }