49 lines
1.7 KiB
JavaScript
49 lines
1.7 KiB
JavaScript
const set_cookie = (name, value, days) => {
|
|
const expires = new Date(Date.now() + days * 86400 * 1000).toUTCString();
|
|
document.cookie = `${name}=${value}; expires=${expires}; path=/;`;
|
|
}
|
|
|
|
window.onload = async () => {
|
|
alert("This service requests a captcha from https://ofd.ru and sends an example receipt to it to check the correctness of the captcha. If you are not okay with making such requests, please leave the site immediately");
|
|
|
|
if (document.cookie.includes('JWT')) {
|
|
document.location = '/';
|
|
}
|
|
|
|
const form = document.getElementById("loginForm");
|
|
const username = document.getElementById("username");
|
|
const password = document.getElementById("password");
|
|
form.addEventListener('submit', async (e) => {
|
|
e.preventDefault();
|
|
const response = await fetch(
|
|
`/api/user/login`, {
|
|
method: "POST",
|
|
headers: {
|
|
'Content-Type': 'application/json'
|
|
},
|
|
body: JSON.stringify({
|
|
"username": username.value,
|
|
"password": password.value
|
|
})
|
|
});
|
|
switch (response.status) {
|
|
case 403:
|
|
alert("Incorrect password");
|
|
password.value = "";
|
|
break;
|
|
case 200:
|
|
response_json = await response.json()
|
|
set_cookie("JWT", response_json["token"], 365);
|
|
window.location.href = '/';
|
|
break;
|
|
case 404:
|
|
alert("No such user exists");
|
|
username.value = "";
|
|
break;
|
|
default:
|
|
alert("Unknown server error. Please, conact the developer");
|
|
console.log(response);
|
|
}
|
|
});
|
|
};
|