1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
import {$, pageInit} from "../base";
import {utilites} from "../utilities";
import {login} from "../api/account-api";
import {strings} from "../i10n.ts";
const submitButton = $("#submit");
const submitButtonSpinner = $("#submit .spinner-border");
const errorContainer = $("#error");
const errorMessage = $("#error-message");
const errorTitle = $("#error-title");
const continueTo = new URL(location.href).searchParams.get("ReturnUrl")
? new URL(location.href).searchParams.get("ReturnUrl")
: "/kontoret";
const email = $("#input-email");
const password = $("#input-password");
const persist = $("#persist-session");
const loginForm = $("#login-form");
const loading = {
show() {
submitButton.classList.add("disabled");
submitButtonSpinner.classList.remove("d-none");
},
hide() {
submitButton.classList.remove("disabled");
submitButtonSpinner.classList.add("d-none");
},
};
const error = {
show(title = strings.languageSpesific.an_error_occured, message = strings.languageSpesific.try_again_soon) {
errorMessage.innerText = message;
errorTitle.innerText = title;
errorContainer.classList.remove("d-none");
},
hide() {
errorMessage.innerText = "";
errorTitle.innerText = "";
errorContainer.classList.add("d-none");
},
};
const form = {
submit() {
loading.show();
error.hide();
let payload = {
username: email.value,
password: password.value,
persist: persist.checked,
};
login(payload, $("input[name=\"xsrf\"]").value).then((response) => {
if (response.status === 200) {
error.hide();
location.href = continueTo;
} else {
utilites.handleError(response, {
title: strings.languageSpesific.an_unknown_error_occured,
message: strings.languageSpesific.try_again_soon,
});
loading.hide();
}
}).catch((err) => console.log(err));
},
isValid() {
email.removeAttribute("aria-invalid");
password.removeAttribute("aria-invalid");
if (!email.value || !utilites.validators.isEmail(email.value)) {
error.show(undefined, strings.languageSpesific.the_email_address + " " + strings.languageSpesific.is_invalid_LC);
email.setAttribute("aria-invalid", "true");
return false;
}
if (!password.value) {
error.show(undefined, strings.languageSpesific.the_password + " " + strings.languageSpesific.is_invalid_LC);
password.setAttribute("aria-invalid", "true");
return false;
}
return true;
},
};
if (location.pathname.startsWith("/logginn")) {
pageInit(() => {
loginForm.addEventListener("submit", (e) => {
e.preventDefault();
e.stopPropagation();
if (form.isValid()) {
form.submit();
}
});
});
}
|