142 lines
5.3 KiB
Plaintext
142 lines
5.3 KiB
Plaintext
diff --git a/client/src/composables/useAuth.js b/client/src/composables/useAuth.js
|
|
index 8921f8d..eae07e6 100644
|
|
--- a/client/src/composables/useAuth.js
|
|
+++ b/client/src/composables/useAuth.js
|
|
@@ -1,6 +1,9 @@
|
|
import { ref, reactive } from 'vue'
|
|
import { useRouter } from 'vue-router'
|
|
import { useWebSocketGlobal } from './useWebSocketGlobal'
|
|
+import { useLogger } from './useLogger'
|
|
+
|
|
+const logger = useLogger('Auth')
|
|
|
|
// Глобальное состояние авторизации
|
|
const isAuthenticated = ref(false)
|
|
@@ -26,6 +29,8 @@ export function useAuth() {
|
|
const router = useRouter()
|
|
const { getGlobalSocket, closeGlobalSocket } = useWebSocketGlobal()
|
|
|
|
+ const loadingAuth = ref(false)
|
|
+
|
|
/**
|
|
* Авторизация пользователя
|
|
* @param {string} phone - номер телефона
|
|
@@ -43,22 +48,19 @@ export function useAuth() {
|
|
// Подготавливаем сообщение авторизации
|
|
const authMessage = {
|
|
do: "avt",
|
|
- tip: "http-admin",
|
|
+ tip: "http-admin",
|
|
login: phone.toString(),
|
|
pass: password
|
|
}
|
|
|
|
// Отправляем запрос авторизации
|
|
const response = await socket.sendMessage(authMessage)
|
|
-
|
|
- console.log('📥 Полный ответ авторизации:', response)
|
|
- console.log('👥 Пользователи:', response.users || response.operators || response.data?.users || 'Нет списка')
|
|
|
|
// Обрабатываем ответ
|
|
if (response.do === 'avt' && response.user) {
|
|
// Успешная авторизация
|
|
const adminData = response.user
|
|
-
|
|
+
|
|
// Сохраняем данные пользователя
|
|
user._id = adminData._id
|
|
user.fio = adminData.fio
|
|
@@ -72,6 +74,12 @@ export function useAuth() {
|
|
user.cdata = adminData.cdata
|
|
user.rdata = adminData.rdata
|
|
user.info = adminData.info || {}
|
|
+
|
|
+ // Обрабатываем pauseInfo из ответа авторизации
|
|
+ if (response.pauseInfo) {
|
|
+ // Передаем в глобальное событие для обработки в useGamePorts
|
|
+ window.dispatchEvent(new CustomEvent('auth-pause-info', { detail: response.pauseInfo }))
|
|
+ }
|
|
|
|
isAuthenticated.value = true
|
|
|
|
@@ -101,7 +109,6 @@ export function useAuth() {
|
|
// Сервер возвращает список в поле admins
|
|
if (response.admins || response.users || response.operators) {
|
|
const adminsList = response.admins || response.users || response.operators || {}
|
|
- console.log('💾 Сохраняем список администраторов/операторов:', adminsList)
|
|
localStorage.setItem('auth_response', JSON.stringify({
|
|
admins: adminsList
|
|
}))
|
|
@@ -183,22 +190,17 @@ export function useAuth() {
|
|
* Проверка сохраненной авторизации
|
|
*/
|
|
const checkAuth = () => {
|
|
- console.log('🔍 checkAuth: isAuthenticated =', isAuthenticated.value, 'user._id =', user._id)
|
|
-
|
|
// Сначала проверяем память
|
|
if (isAuthenticated.value && user._id) {
|
|
- console.log('✅ Пользователь уже авторизован в памяти')
|
|
return true
|
|
}
|
|
|
|
// Если в памяти нет данных, проверяем localStorage
|
|
try {
|
|
const savedUserData = localStorage.getItem('user_data')
|
|
- console.log('💾 Данные из localStorage:', savedUserData ? 'найдены' : 'не найдены')
|
|
-
|
|
+
|
|
if (savedUserData) {
|
|
const userData = JSON.parse(savedUserData)
|
|
- console.log('👤 Восстанавливаем пользователя:', userData.fio)
|
|
|
|
// Восстанавливаем данные пользователя
|
|
user._id = userData._id
|
|
@@ -215,32 +217,41 @@ export function useAuth() {
|
|
user.info = userData.info || {}
|
|
|
|
isAuthenticated.value = true
|
|
- console.log('✅ Пользователь восстановлен из localStorage')
|
|
return true
|
|
}
|
|
} catch (error) {
|
|
- console.error('❌ Ошибка при восстановлении данных пользователя:', error)
|
|
+ logger.error('Ошибка при восстановлении данных пользователя:', error)
|
|
localStorage.removeItem('user_data')
|
|
}
|
|
|
|
- console.log('❌ Пользователь не авторизован')
|
|
+ logger.warn('Пользователь не авторизован')
|
|
return false
|
|
}
|
|
|
|
/**
|
|
* Переавторизация
|
|
*/
|
|
- const reauth = () => {
|
|
- return checkAuth()
|
|
+ const reauth = async () => {
|
|
+ loadingAuth.value = true
|
|
+ try {
|
|
+ return checkAuth()
|
|
+ } finally {
|
|
+ loadingAuth.value = false
|
|
+ }
|
|
}
|
|
|
|
+ // Временная заглушка для роли пользователя (пока нет полной интеграции)
|
|
+ const userRole = ref('operators') // По умолчанию оператор
|
|
+
|
|
return {
|
|
// Состояние
|
|
isAuthenticated,
|
|
user,
|
|
authError,
|
|
isLoading,
|
|
-
|
|
+ loadingAuth,
|
|
+ userRole,
|
|
+
|
|
// Методы
|
|
login,
|
|
logout,
|