2023-01-04 04:21:49 +00:00
|
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
// Copyright © 2022 Roberto Hidalgo <nidito@un.rob.mx>
|
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(() => {
|
2023-04-16 22:00:21 +00:00
|
|
|
let next = "/"
|
|
|
|
try {
|
|
|
|
const follow = window.location.search.replace("?next=", "")
|
|
|
|
if (follow != "") {
|
|
|
|
next = follow
|
|
|
|
}
|
|
|
|
} catch (err) {
|
|
|
|
console.error(`Could not find next path to follow: ${err}`)
|
|
|
|
}
|
|
|
|
|
|
|
|
window.location = next;
|
2022-12-30 06:51:51 +00:00
|
|
|
}).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)
|