forked from peas-dev/peas
53 lines
1.5 KiB
JavaScript
53 lines
1.5 KiB
JavaScript
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}`)
|
|
}
|
|
});
|