brief-rags-bench/static/js/services/auth.service.js

68 lines
1.6 KiB
JavaScript
Raw Normal View History

2025-12-25 09:39:58 +01:00
/**
* Auth Service
*
* Сервис авторизации пользователей.
*/
import api from './api-client.js'
import settingsService from './settings.service.js'
/**
* Проверить авторизацию при загрузке страницы
* @returns {Promise<boolean>} True если авторизован
*/
export async function checkAuth() {
if (!api.isAuthenticated()) {
return false
}
// Попробовать загрузить настройки (валидация токена)
try {
await settingsService.loadFromServer()
return true
} catch (error) {
console.error('Token validation failed:', error)
return false
}
}
/**
* Авторизация пользователя
* @param {string} login - 8-значный логин
* @returns {Promise<object>} User info
*/
export async function login(login) {
// Валидация формата логина
if (!/^[0-9]{8}$/.test(login)) {
throw new Error('Логин должен состоять из 8 цифр')
}
try {
const response = await api.login(login)
console.log('Login successful:', response.user)
// Загрузить настройки с сервера
await settingsService.loadFromServer()
return response.user
} catch (error) {
console.error('Login failed:', error)
throw error
}
}
/**
* Выход из системы
*/
export function logout() {
api.logout()
}
/**
* Проверить авторизован ли пользователь
* @returns {boolean}
*/
export function isAuthenticated() {
return api.isAuthenticated()
}