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