puerta/internal/server/static/login.js

51 lines
1.1 KiB
JavaScript
Raw Normal View History

2022-12-30 06:51:51 +00:00
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)