aboutsummaryrefslogtreecommitdiffstats
path: root/src/server/wwwroot/login.js
diff options
context:
space:
mode:
authorivarlovlie <git@ivarlovlie.no>2020-08-10 21:35:58 +0200
committerivarlovlie <git@ivarlovlie.no>2020-08-10 21:35:58 +0200
commit2cfee78597971b2e3e7e612eb9d7e8805e1aef85 (patch)
treeb939d48347c7fff48d2a51761cb546c3b9ac6ec0 /src/server/wwwroot/login.js
parent8614d18522441543e08c37c68121fed1fa8d6ae7 (diff)
downloaddough-2cfee78597971b2e3e7e612eb9d7e8805e1aef85.tar.xz
dough-2cfee78597971b2e3e7e612eb9d7e8805e1aef85.zip
add signing credentials
Diffstat (limited to 'src/server/wwwroot/login.js')
-rw-r--r--src/server/wwwroot/login.js73
1 files changed, 73 insertions, 0 deletions
diff --git a/src/server/wwwroot/login.js b/src/server/wwwroot/login.js
new file mode 100644
index 0000000..6f80a3f
--- /dev/null
+++ b/src/server/wwwroot/login.js
@@ -0,0 +1,73 @@
+const form = document.querySelector("form");
+let errorEL = document.querySelector("#error");
+let titleEl = document.querySelector("#title");
+let messageEl = document.querySelector("#message");
+const loginBtn = document.querySelector("#login-btn");
+let returnUrl = new URL(location.href).searchParams.get("ReturnUrl");
+if(!returnUrl) location.href = "http://localhost:3000";
+form.addEventListener("submit", () => {
+ const username = document.querySelector("#username").value;
+ const password = document.querySelector("#password").value;
+ const persist = document.querySelector("#persist").checked;
+
+ let data = {
+ username,
+ password,
+ returnUrl,
+ persist,
+ };
+
+ Util.addClass(loginBtn, "btn--state-b");
+
+ fetch("/account/login", {
+ method: "POST",
+ body: JSON.stringify(data),
+ credentials: "include",
+ headers: {
+ "Content-Type": "application/json;charset=utf-8",
+ RequestVerificationToken: document.querySelector(
+ "input[name='__RequestVerificationToken']"
+ ).value,
+ },
+ })
+ .then((response) => {
+ if (response.status === 400) {
+ response.json().then((res) => {
+ if (res.title && res.message) {
+ displayError(res.title, res.message);
+ }
+ });
+ } else {
+ location.href = returnUrl;
+ }
+ })
+ .catch((error) => console.error(error));
+});
+
+function displayError(title, message) {
+ titleEl.innerText = title;
+ messageEl.innerText = message;
+ Util.addClass(errorEL, "alert--is-visible");
+ Util.addClass(errorEL, "alert--error");
+}
+
+function hideError() {
+ Util.removeClass(errorEL, "alert--is-visible");
+ Util.removeClass(errorEL, "alert--error");
+}
+
+let alertClose = document.getElementsByClassName("js-alert__close-btn");
+if (alertClose.length > 0) {
+ for (let i = 0; i < alertClose.length; i++) {
+ (function (i) {
+ initAlertEvent(alertClose[i]);
+ })(i);
+ }
+}
+
+function initAlertEvent(element) {
+ element.addEventListener("click", function (event) {
+ event.preventDefault();
+ Util.removeClass(element.closest(".js-alert"), "alert--is-visible");
+ });
+} \ No newline at end of file