From 9383a2fb09ffb60cfe63683106945bd688affa59 Mon Sep 17 00:00:00 2001 From: ivarlovlie Date: Wed, 1 Jun 2022 21:13:43 +0200 Subject: feat: Initial commit after clean slate --- src/wwwroot/scripts/front/logginn.js | 92 ++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 src/wwwroot/scripts/front/logginn.js (limited to 'src/wwwroot/scripts/front/logginn.js') diff --git a/src/wwwroot/scripts/front/logginn.js b/src/wwwroot/scripts/front/logginn.js new file mode 100644 index 0000000..f15a323 --- /dev/null +++ b/src/wwwroot/scripts/front/logginn.js @@ -0,0 +1,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(); + } + }); + }); +} -- cgit v1.3