This commit is contained in:
2026-01-28 01:12:50 +03:00
parent 25fc82c14a
commit a93d153c5f

View File

@ -2844,15 +2844,19 @@
const data = await response.json(); const data = await response.json();
currentUser = data.user; currentUser = data.user;
updateUserUI(); updateUserUI();
hideAuthModal();
return true; return true;
} else { } else {
// Не авторизован, но не показываем модальное окно автоматически // Не авторизован - показываем модальное окно авторизации
// Пользователь может продолжить без авторизации currentUser = null;
showAuthModal();
return false; return false;
} }
} catch (error) { } catch (error) {
console.error('Ошибка проверки авторизации:', error); console.error('Ошибка проверки авторизации:', error);
// Не показываем модальное окно при ошибке, пользователь может продолжить // При ошибке также показываем модальное окно
currentUser = null;
showAuthModal();
return false; return false;
} }
} }
@ -2877,6 +2881,10 @@
} }
function hideAuthModal() { function hideAuthModal() {
// Закрываем модальное окно только если пользователь авторизован
if (!currentUser) {
return; // Не закрываем, если пользователь не авторизован
}
const authOverlay = $('auth-overlay'); const authOverlay = $('auth-overlay');
if (authOverlay) { if (authOverlay) {
authOverlay.classList.add('hidden'); authOverlay.classList.add('hidden');
@ -2884,6 +2892,27 @@
} }
function initAuth() { function initAuth() {
// Предотвращаем закрытие модального окна кликом вне его, если пользователь не авторизован
const authOverlay = $('auth-overlay');
if (authOverlay) {
authOverlay.addEventListener('click', (e) => {
// Закрываем только если клик был по самому overlay (не по модальному окну внутри)
if (e.target === authOverlay && currentUser) {
hideAuthModal();
} else if (e.target === authOverlay && !currentUser) {
// Если пользователь не авторизован, не закрываем модальное окно
e.stopPropagation();
}
});
// Предотвращаем закрытие при клике на само модальное окно
const authModal = authOverlay.querySelector('.auth-modal');
if (authModal) {
authModal.addEventListener('click', (e) => {
e.stopPropagation();
});
}
}
// Переключение между вкладками авторизации // Переключение между вкладками авторизации
$all('.auth-tab').forEach(tab => { $all('.auth-tab').forEach(tab => {
tab.addEventListener('click', () => { tab.addEventListener('click', () => {
@ -3000,12 +3029,10 @@
}); });
} }
// Кнопка закрытия авторизации // Кнопка закрытия авторизации - скрываем, так как авторизация обязательна
const authClose = $('auth-close'); const authClose = $('auth-close');
if (authClose) { if (authClose) {
authClose.addEventListener('click', () => { authClose.style.display = 'none';
hideAuthModal();
});
} }
// Кнопка выхода // Кнопка выхода
@ -3017,9 +3044,13 @@
currentUser = null; currentUser = null;
const userInfo = $('user-info'); const userInfo = $('user-info');
if (userInfo) userInfo.style.display = 'none'; if (userInfo) userInfo.style.display = 'none';
// После выхода показываем модальное окно авторизации
showAuthModal(); showAuthModal();
} catch (error) { } catch (error) {
console.error('Ошибка выхода:', error); console.error('Ошибка выхода:', error);
// Даже при ошибке показываем модальное окно
currentUser = null;
showAuthModal();
} }
}); });
} }
@ -3104,10 +3135,9 @@
function init() { function init() {
initLobby(); initLobby();
initAuth(); initAuth();
// Проверяем авторизацию, но не блокируем доступ // Проверяем авторизацию - модальное окно покажется автоматически, если не авторизован
checkAuth().catch(() => { checkAuth().catch(() => {
// Если авторизация не удалась, просто показываем модальное окно // При ошибке модальное окно уже показано в checkAuth()
// Пользователь может продолжить без авторизации
}); });
showScreen('lobby'); showScreen('lobby');
socket = null; socket = null;