/** * OSS Community 认证页面 JS * 处理登录/注册表单提交 */ // 切换密码可见性 function togglePassword(fieldId = 'password') { const input = document.getElementById(fieldId); const icon = document.getElementById(`eyeIcon-${fieldId}`) || document.getElementById('eyeIcon'); if (input.type === 'password') { input.type = 'text'; icon.innerHTML = ` `; } else { input.type = 'password'; icon.innerHTML = ` `; } } // 显示错误消息 function showError(message) { const errorEl = document.getElementById('errorMessage'); const successEl = document.getElementById('successMessage'); if (errorEl) { errorEl.textContent = message; errorEl.style.display = 'block'; } if (successEl) { successEl.style.display = 'none'; } } // 显示成功消息 function showSuccess(message) { const successEl = document.getElementById('successMessage'); const errorEl = document.getElementById('errorMessage'); if (successEl) { successEl.textContent = message; successEl.style.display = 'block'; } if (errorEl) { errorEl.style.display = 'none'; } } // 隐藏消息 function hideMessages() { const errorEl = document.getElementById('errorMessage'); const successEl = document.getElementById('successMessage'); if (errorEl) errorEl.style.display = 'none'; if (successEl) successEl.style.display = 'none'; } // 设置按钮加载状态 function setButtonLoading(loading) { const btn = document.getElementById('submitBtn'); const text = btn.querySelector('.btn-text'); const spinner = btn.querySelector('.btn-spinner'); if (loading) { btn.disabled = true; text.style.display = 'none'; spinner.style.display = 'block'; } else { btn.disabled = false; text.style.display = 'inline'; spinner.style.display = 'none'; } } // 登录表单 const loginForm = document.getElementById('loginForm'); if (loginForm) { loginForm.addEventListener('submit', async (e) => { e.preventDefault(); hideMessages(); setButtonLoading(true); const formData = { username: document.getElementById('username').value.trim(), password: document.getElementById('password').value, remember: document.getElementById('remember').checked }; try { const response = await fetch('api/auth.php?action=login', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(formData) }); const result = await response.json(); if (result.success) { showSuccess('登录成功!正在跳转...'); setTimeout(() => { window.location.href = 'index.php'; }, 1000); } else { showError(result.message || '登录失败,请检查用户名和密码'); } } catch (error) { showError('网络错误,请稍后重试'); } finally { setButtonLoading(false); } }); } // 注册表单 const registerForm = document.getElementById('registerForm'); if (registerForm) { registerForm.addEventListener('submit', async (e) => { e.preventDefault(); hideMessages(); setButtonLoading(true); const password = document.getElementById('password').value; const confirmPassword = document.getElementById('confirmPassword').value; // 前端验证 if (password !== confirmPassword) { showError('两次输入的密码不一致'); setButtonLoading(false); return; } if (password.length < 6) { showError('密码长度至少 6 个字符'); setButtonLoading(false); return; } const formData = { username: document.getElementById('username').value.trim(), email: document.getElementById('email').value.trim(), password: password }; try { const response = await fetch('api/auth.php?action=register', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(formData) }); const result = await response.json(); if (result.success) { showSuccess('注册成功!正在跳转到登录页...'); setTimeout(() => { window.location.href = 'login.php'; }, 1500); } else { showError(result.message || '注册失败,请稍后重试'); } } catch (error) { showError('网络错误,请稍后重试'); } finally { setButtonLoading(false); } }); }