(() => { const auth = window.TrafficAuth; const $ = (id) => document.getElementById(id); const enrollmentByUser = new Map(); let selectedUsername = ''; function nextPage() { const next = new URLSearchParams(location.search).get('next'); return ['link-generator.html', 'link-history.html'].includes(next) ? next : 'link-generator.html'; } function showToast(message) { const toast = $('toast'); toast.textContent = message; toast.classList.add('show'); setTimeout(() => toast.classList.remove('show'), 1600); } function currentEnrollment() { if (!enrollmentByUser.has(selectedUsername)) enrollmentByUser.set(selectedUsername, auth.createEnrollment(selectedUsername)); return enrollmentByUser.get(selectedUsername); } function renderQr(otpauthUrl) { const container = $('qrCode'); container.innerHTML = ''; if (typeof window.qrcode !== 'function') { container.innerHTML = '二维码加载失败,请刷新页面重试'; return false; } try { const qr = window.qrcode(0, 'M'); qr.addData(otpauthUrl); qr.make(); container.innerHTML = qr.createSvgTag(5, 4); return true; } catch (_) { container.innerHTML = '二维码生成失败,请刷新页面重试'; return false; } } function resetForms() { ['signinPassword','signinCode','newPassword','confirmPassword','setupCode'].forEach((id) => { $(id).value = ''; }); $('accountMessage').textContent = ''; $('signinMessage').textContent = ''; $('enrollMessage').textContent = ''; } function openAccount(username) { selectedUsername = username; const enrolled = auth.isEnrolled(username); $('accountForm').classList.add('hidden'); $('confirmedAccount').classList.remove('hidden'); $('confirmedUser').textContent = username; $('signinForm').classList.toggle('hidden', !enrolled); $('enrollForm').classList.toggle('hidden', enrolled); $('loginTitle').textContent = enrolled ? '欢迎回来' : '首次注册'; $('loginSubtitle').textContent = enrolled ? '输入密码和动态验证码登录' : '扫描二维码并设置本机密码'; if (!enrolled) { const ready = renderQr(currentEnrollment().otpauthUrl); $('enrollMessage').textContent = ready ? '' : '二维码组件加载失败,暂时无法完成注册'; } } function changeAccount() { selectedUsername = ''; resetForms(); $('confirmedAccount').classList.add('hidden'); $('signinForm').classList.add('hidden'); $('enrollForm').classList.add('hidden'); $('accountForm').classList.remove('hidden'); $('loginTitle').textContent = 'Shareit ID 登录'; $('loginSubtitle').textContent = '输入你的 Shareit ID 继续'; $('loginUser').focus(); } $('accountForm').addEventListener('submit', (event) => { event.preventDefault(); const username = $('loginUser').value.trim().toLowerCase(); if (!username) { $('accountMessage').textContent = '请输入 Shareit ID'; return; } if (!auth.findUser(username)) { $('accountMessage').textContent = '该 Shareit ID 不在授权名单中'; return; } resetForms(); openAccount(username); }); $('signinForm').addEventListener('submit', async (event) => { event.preventDefault(); const button = event.submitter; button.disabled = true; $('signinMessage').textContent = '正在验证…'; try { await auth.login(selectedUsername, $('signinPassword').value, $('signinCode').value); location.href = nextPage(); } catch (error) { $('signinMessage').textContent = error.message; button.disabled = false; } }); $('enrollForm').addEventListener('submit', async (event) => { event.preventDefault(); const password = $('newPassword').value; if (password !== $('confirmPassword').value) { $('enrollMessage').textContent = '两次输入的密码不一致'; return; } if (typeof window.qrcode !== 'function') { $('enrollMessage').textContent = '二维码组件尚未加载,请刷新页面重试'; return; } const button = event.submitter; button.disabled = true; $('enrollMessage').textContent = '正在注册…'; try { await auth.enroll(selectedUsername, password, currentEnrollment().secret, $('setupCode').value); location.href = nextPage(); } catch (error) { $('enrollMessage').textContent = error.message; button.disabled = false; } }); $('changeAccount').addEventListener('click', changeAccount); $('resetEnrollment').addEventListener('click', () => { if (!window.confirm(`确定清除 ${selectedUsername} 在当前浏览器的密码和 Authenticator 绑定吗?`)) return; try { auth.clearEnrollment(selectedUsername); enrollmentByUser.delete(selectedUsername); resetForms(); openAccount(selectedUsername); showToast('本机绑定已清除,请重新注册'); } catch (error) { $('signinMessage').textContent = error.message; } }); if (auth.currentUser()) location.replace(nextPage()); else $('loginUser').focus(); })();