<!-- src/main/resources/static/register.html -->
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>注册</title>
</head>
<body>
<h2>用户注册</h2>
<form id="regForm">
    <label>用户名：</label>
    <input type="text" name="username" required>
    <label>邮箱：</label>
    <input type="email" name="email" required>
    <button type="button" id="sendCode">发送验证码</button>
    <label>邮箱验证码：</label>
    <input type="text" name="verificationCode" required>
    <label>密码：</label>
    <input type="password" name="password" required>
    <label>身份证号（8 位数字）：</label>
    <input type="number" name="identificationNumber" required>
    <label>邀请码：</label>
    <input type="text" name="inviteCode" required>
    <button type="submit">注册</button>
</form>
<script>
    document.getElementById('sendCode')
        .addEventListener('click', async () => {
            const form = new URLSearchParams();
            form.set('email', document.querySelector('[name=email]').value);
            form.set('inviteCode', document.querySelector('[name=inviteCode]').value);
            const res = await fetch('/sendVerification', {
                method: 'POST',
                body: form
            });
            alert((await res.json()).msg);
        });
    document.getElementById('regForm')
        .addEventListener('submit', async e => {
            e.preventDefault();
            const form = new URLSearchParams(new FormData(e.target));
            const res = await fetch('/register', {
                method: 'POST',
                body: form
            });
            const json = await res.json();
            alert(json.msg);
            if (res.ok && json.code===0) {
                window.location.href='login.html';
            }
        });
</script>
</body>
</html>
