dyspark / templates /register.html
cacode's picture
Upload 33 files
d10e42a verified
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>DouYin Spark Flow - 用户注册</title>
<link rel="stylesheet" href="/static/style.css">
</head>
<body class="login-body">
<main class="login-shell">
<section class="login-card">
<h1>用户注册</h1>
<p class="subtitle">上传 <code>usersData.json</code>,系统将自动提取用户名并创建独立任务空间</p>
<div class="field">
<label for="usersFile">上传 usersData.json</label>
<input id="usersFile" type="file" accept="application/json,.json">
</div>
<div class="field">
<label for="password">设置登录密码</label>
<input id="password" type="password" placeholder="至少 4 位" autocomplete="new-password">
</div>
<button id="registerBtn" class="btn primary">注册账号</button>
<p id="registerMsg" class="msg"></p>
<div class="auth-links">
<a href="/login">已有账号?去登录</a>
</div>
</section>
</main>
<script>
const registerBtn = document.getElementById("registerBtn");
const usersFileInput = document.getElementById("usersFile");
const passwordInput = document.getElementById("password");
const registerMsg = document.getElementById("registerMsg");
async function doRegister() {
const file = usersFileInput.files[0];
const password = passwordInput.value.trim();
if (!file) {
registerMsg.textContent = "请先上传 usersData.json 文件。";
return;
}
if (!password) {
registerMsg.textContent = "请输入登录密码。";
return;
}
registerBtn.disabled = true;
registerMsg.textContent = "正在注册...";
try {
const formData = new FormData();
formData.append("users_file", file);
formData.append("password", password);
const resp = await fetch("/api/register", {
method: "POST",
body: formData,
credentials: "same-origin",
});
const data = await resp.json();
if (!resp.ok || !data.ok) {
throw new Error(data.message || "注册失败");
}
registerMsg.textContent = `注册成功,用户名为 ${data.username},正在跳转登录页...`;
setTimeout(() => {
window.location.href = "/login";
}, 1200);
} catch (err) {
registerMsg.textContent = "注册失败:" + err.message;
} finally {
registerBtn.disabled = false;
}
}
registerBtn.addEventListener("click", doRegister);
</script>
</body>
</html>