let authMode = 'login'; // 'login' или 'register' function showAuthModal() { document.getElementById('auth-modal').classList.remove('hidden'); } function hideAuthModal() { document.getElementById('auth-modal').classList.add('hidden'); } function setAuthMode(mode) { authMode = mode; const titleEl = document.getElementById('auth-title'); const submitBtnText = document.getElementById('auth-submit-text'); const toggleBtn = document.getElementById('auth-toggle-btn'); const errorEl = document.getElementById('auth-error'); errorEl.classList.add('hidden'); if (mode === 'register') { titleEl.innerText = "Регистрация нового пользователя"; submitBtnText.innerText = "Зарегистрироваться"; toggleBtn.innerText = "Уже есть аккаунт? Войти"; } else { titleEl.innerText = "Авторизация в системе"; submitBtnText.innerText = "Войти в систему"; toggleBtn.innerText = "Создать новый аккаунт"; } } function toggleAuthMode() { setAuthMode(authMode === 'login' ? 'register' : 'login'); } async function handleLogin(e) { e.preventDefault(); const usernameInput = document.getElementById('auth-username-input'); const passwordInput = document.getElementById('auth-password-input'); const errorEl = document.getElementById('auth-error'); const username = usernameInput.value.trim(); const password = passwordInput.value; if (!username || !password) return; errorEl.classList.add('hidden'); const endpoint = authMode === 'register' ? '/api/v1/auth/register' : '/api/v1/auth/login'; try { const res = await fetch(endpoint, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ username, password }) }); const data = await res.json(); if (res.status === 200) { API_TOKEN = data.token; CURRENT_USERNAME = data.username; IS_GUEST = false; localStorage.setItem(AUTH_TOKEN_KEY, data.token); localStorage.setItem('scud_username', data.username); localStorage.removeItem('scud_is_guest'); hideAuthModal(); updateUIState(); loadTasks(); } else { errorEl.innerText = data.detail || "Ошибка авторизации"; errorEl.classList.remove('hidden'); } } catch (err) { errorEl.innerText = "Ошибка соединения с сервером"; errorEl.classList.remove('hidden'); } } function enableGuestMode() { IS_GUEST = true; API_TOKEN = ""; CURRENT_USERNAME = "Гость"; localStorage.setItem('scud_is_guest', 'true'); hideAuthModal(); updateUIState(); } function logout() { localStorage.removeItem(AUTH_TOKEN_KEY); localStorage.removeItem('scud_username'); localStorage.removeItem('scud_is_guest'); API_TOKEN = ""; CURRENT_USERNAME = ""; IS_GUEST = false; showAuthModal(); } function updateUIState() { const tasksBtn = document.getElementById('tasks-drawer-btn'); const guestBadge = document.getElementById('guest-badge'); const usernameBadge = document.getElementById('username-badge'); if (IS_GUEST) { if (tasksBtn) tasksBtn.classList.add('hidden'); if (guestBadge) guestBadge.classList.remove('hidden'); if (usernameBadge) usernameBadge.classList.add('hidden'); } else { if (tasksBtn) tasksBtn.classList.remove('hidden'); if (guestBadge) guestBadge.classList.add('hidden'); if (usernameBadge) { usernameBadge.innerText = CURRENT_USERNAME || 'User'; usernameBadge.classList.remove('hidden'); } } }