File size: 2,705 Bytes
d10e42a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<!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>