51 lines
1.1 KiB
JavaScript
51 lines
1.1 KiB
JavaScript
const button = document.querySelector("#auth")
|
|
const form = document.querySelector("#login")
|
|
|
|
async function Login() {
|
|
const response = await window.fetch(`/api/login`, {
|
|
method: 'POST',
|
|
body: new URLSearchParams(new FormData(form)),
|
|
})
|
|
|
|
if (!response.ok) {
|
|
let message = response.statusText
|
|
try {
|
|
message = await response.text()
|
|
} catch {}
|
|
|
|
throw new Error(message);
|
|
}
|
|
|
|
return response.status
|
|
}
|
|
|
|
function clearStatus() {
|
|
form.classList.remove("failed")
|
|
form.classList.remove("success")
|
|
}
|
|
|
|
function submit(evt){
|
|
evt.preventDefault()
|
|
button.disabled = true
|
|
|
|
document.querySelector('.error').innerText = ""
|
|
clearStatus()
|
|
|
|
Login().then(() => {
|
|
window.location = "/";
|
|
}).catch((err) => {
|
|
form.classList.add("failed")
|
|
document.querySelector('.error').innerText = err
|
|
console.error(err)
|
|
}).finally(() => {
|
|
form.classList.remove("requested")
|
|
button.disabled = false
|
|
setTimeout(clearStatus, 5000)
|
|
})
|
|
|
|
return false
|
|
}
|
|
|
|
button.addEventListener("click", submit)
|
|
form.addEventListener("submit", submit)
|