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

68 lines
1.6 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* 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()
}