68 lines
1.6 KiB
JavaScript
68 lines
1.6 KiB
JavaScript
/**
|
||
* 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()
|
||
}
|