const form = document.querySelector("form"); form.addEventListener("submit", async (e) => { e.preventDefault(); document.getElementsByName("username")[0].disable = ""; document.getElementsByName("email")[0].disable = ""; document.getElementsByName("password")[0].disable = ""; document.getElementsByName("agreeRule")[0].disable = ""; document.getElementsByName("submit")[0].disable = ""; let error = ""; const infoReq = await fetch("/api/info", { method: "POST", cache: "no-store", }); if (!infoReq.ok) { error = "通信エラーが発生しました"; } const infoRes = await infoReq.json(); const username = document.getElementsByName("username")[0].value; const email = document.getElementsByName("email")[0].value; const password = document.getElementsByName("password")[0].value; let turnstile; if (infoRes.botprotection.turnstile === true) { turnstile = document.getElementsByName("cf-turnstile-response")[0].value; } const req = await fetch("/api/signup", { method: "POST", cache: "no-store", headers: { 'Content-Type': "application/json", }, body: JSON.stringify({ username: username, email: email, password: password, turnstile: turnstile ?? undefined, }), }); if (!req.ok) { error = "通信エラーが発生しました"; } const res = await req.json(); if (res.success === true) { location.href = "/signin"; } else { location.replace(`/signup?error=${res.error}`) } });