/
Gabryelf
/
Pixel-Orb
Обзор
Документация
Войти
/
Gabryelf
/
Pixel-Orb
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/client/services/authService.js
121 строка
3 KB
Valeev Serj
restruct_v0.0.1
07 авг 2026, 22:50
07 авг 2026, 22:50
41f78a4
Код
Авторство
О чём код?
class AuthService { constructor() { this.currentUser = null; this.token = null; this.loadFromLocalStorage(); } async register(username, email, password) { const response = await fetch('/api/auth/register', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ username, email, password }) }); if (!response.ok) { const error = await response.json(); throw new Error(error.error || 'Registration failed'); } const data = await response.json(); this.setSession(data.user, data.token); return data; } async login(email, password) { const response = await fetch('/api/auth/login', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ email, password }) }); if (!response.ok) { const error = await response.json(); throw new Error(error.error || 'Login failed'); } const data = await response.json(); this.setSession(data.user, data.token); return data; } async createGuest() { const response = await fetch('/api/auth/guest', { method: 'POST', headers: { 'Content-Type': 'application/json' } }); if (!response.ok) { const error = await response.json(); throw new Error(error.error || 'Guest creation failed'); } const data = await response.json(); this.setSession(data.user, data.token); return data; } async getCurrentUser() { if (this.currentUser) { return this.currentUser; } const token = localStorage.getItem('pixelOrbToken'); if (token) { try { const response = await fetch('/api/auth/me', { headers: { 'Authorization': `Bearer ${token}` } }); if (response.ok) { const data = await response.json(); this.currentUser = data.user; return this.currentUser; } } catch (error) { console.warn('Failed to verify token:', error); } } return null; } setSession(user, token) { this.currentUser = user; this.token = token; localStorage.setItem('pixelOrbUser', JSON.stringify(user)); localStorage.setItem('pixelOrbToken', token); } logout() { this.currentUser = null; this.token = null; localStorage.removeItem('pixelOrbUser'); localStorage.removeItem('pixelOrbToken'); } loadFromLocalStorage() { const userData = localStorage.getItem('pixelOrbUser'); const token = localStorage.getItem('pixelOrbToken'); if (userData && token) { try { this.currentUser = JSON.parse(userData); this.token = token; } catch (e) { console.warn('Failed to load user from localStorage'); } } } isAuthenticated() { return !!this.currentUser && !!this.token; } isGuest() { return this.currentUser?.isGuest === true; } } const authService = new AuthService(); export default authService;