aboutsummaryrefslogtreecommitdiff
path: root/interface/public
diff options
context:
space:
mode:
authorBobby <[email protected]>2022-05-01 01:02:38 -0400
committerGitHub <[email protected]>2022-05-01 01:02:38 -0400
commitb0b1938f0e2ae2d159f0a616f8043d0b7f24f2eb (patch)
tree71ed919b888e83fb49d619d1ba338dcba43b245c /interface/public
parentfd8acf8d1b04368763a97d1452565aa71dcc118a (diff)
parentd527bddaeb3083d2a5ec787626e512eb45d3a967 (diff)
downloadWelfare-Schemes-DMQL-b0b1938f0e2ae2d159f0a616f8043d0b7f24f2eb.tar.xz
Welfare-Schemes-DMQL-b0b1938f0e2ae2d159f0a616f8043d0b7f24f2eb.zip
Merge pull request #4 from luciferreeves/main
Main page changes
Diffstat (limited to 'interface/public')
-rw-r--r--interface/public/login.js39
-rw-r--r--interface/public/logout.js5
-rw-r--r--interface/public/router.js7
-rw-r--r--interface/public/verify.js21
4 files changed, 72 insertions, 0 deletions
diff --git a/interface/public/login.js b/interface/public/login.js
new file mode 100644
index 0000000..3396f81
--- /dev/null
+++ b/interface/public/login.js
@@ -0,0 +1,39 @@
+$(".ui.form").form({
+ fields: {
+ username: "empty",
+ password: "empty",
+ },
+});
+
+function login(event) {
+ event.preventDefault();
+ const username = $("#username").val().trim();
+ const password = $("#password").val().trim();
+
+ // make sure username is a-zA-Z0-9
+ if (!username.match(/^[a-zA-Z0-9]+$/)) {
+ alert("Username must be alphanumeric");
+ return;
+ } else {
+ // make request to /api/login
+ fetch("/api/login", {
+ method: "POST",
+ headers: {
+ "Content-Type": "application/json",
+ },
+ body: JSON.stringify({
+ username,
+ password,
+ }),
+ }).then((response) => {
+ if (response.status === 200) {
+ response.json().then((data) => {
+ localStorage.setItem("token", data.token);
+ window.location.href = "/";
+ });
+ } else {
+ alert("Invalid username or password");
+ }
+ });
+ }
+}
diff --git a/interface/public/logout.js b/interface/public/logout.js
new file mode 100644
index 0000000..401f06d
--- /dev/null
+++ b/interface/public/logout.js
@@ -0,0 +1,5 @@
+function logout(event) {
+ event.preventDefault();
+ localStorage.removeItem("token");
+ window.location.href = "/";
+}
diff --git a/interface/public/router.js b/interface/public/router.js
new file mode 100644
index 0000000..23f8115
--- /dev/null
+++ b/interface/public/router.js
@@ -0,0 +1,7 @@
+function route(page) {
+ if (!localStorage.getItem("token")) {
+ $("#loginButton").click();
+ } else {
+ window.location.href = page;
+ }
+} \ No newline at end of file
diff --git a/interface/public/verify.js b/interface/public/verify.js
new file mode 100644
index 0000000..94025f8
--- /dev/null
+++ b/interface/public/verify.js
@@ -0,0 +1,21 @@
+const token = localStorage.getItem("token");
+if (token) {
+ fetch("/api/verify", {
+ method: "POST",
+ headers: {
+ Authorization: `Bearer ${token}`,
+ }
+ }).then(response => {
+ if (response.status === 200) {
+ $('#loginButton').hide();
+ $('#logoutButton').show();
+ } else {
+ window.location.href = "/";
+ $('#loginButton').show();
+ $('#logoutButton').hide();
+ }
+ });
+} else {
+ $('#loginButton').show();
+ $('#logoutButton').hide();
+}