From 0ef0b82765ae1b9b2d552e0c2f691cba342919c6 Mon Sep 17 00:00:00 2001 From: Enstrayed <48845980+Enstrayed@users.noreply.github.com> Date: Mon, 26 May 2025 01:26:35 -0700 Subject: [PATCH] this codebase is kindof a mess now --- routes/auth.js | 6 +-- routes/helpdesk.js | 8 ++++ website/helpdesk/forms/manifest.json | 10 ++++ website/helpdesk/templates/landing.html | 32 ++----------- website/helpdesk/templates/newticket.html | 56 ++++++++++++++++++++++ website/static/{ => helpdesk}/helpdesk.css | 9 +++- website/static/helpdesk/login.js | 54 +++++++++++++++++++++ 7 files changed, 143 insertions(+), 32 deletions(-) create mode 100644 website/helpdesk/forms/manifest.json create mode 100644 website/helpdesk/templates/newticket.html rename website/static/{ => helpdesk}/helpdesk.css (86%) create mode 100644 website/static/helpdesk/login.js diff --git a/routes/auth.js b/routes/auth.js index ef7cdfb..98ae8c1 100644 --- a/routes/auth.js +++ b/routes/auth.js @@ -43,14 +43,14 @@ app.get("/api/auth/logout", (rreq,rres) => { if (dbRes.count > 0) { rres.send("Success") } else { - rres.status(400).send("Error: Token does not exist.") + rres.status(400).send("Token does not exist.") } }).catch(dbErr => { logRequest(rres,rreq,500,dbErr) - rres.status(500).send("Error: Exception occured while invalidating token, details: "+dbErr) + rres.status(500).send("Exception occured while invalidating token, details: "+dbErr) }) } else { - rres.status(400).send("Error: Missing token or authorization header, you may not be logged in.") + rres.status(400).send("Missing token or authorization header, you may not be logged in.") } }) diff --git a/routes/helpdesk.js b/routes/helpdesk.js index 1c37c4d..d456bb5 100644 --- a/routes/helpdesk.js +++ b/routes/helpdesk.js @@ -8,4 +8,12 @@ app.get("/helpdesk/articles/*", (rreq, rres) => { rres.sendFile(process.cwd()+"/website/helpdesk/kbas/"+rreq.url.replace("/helpdesk/articles/","")) }) +app.get("/helpdesk/ticket/new", (rreq,rres) => { + rres.sendFile(process.cwd()+"/website/helpdesk/templates/newticket.html") +}) + +app.get("/api/helpdesk/forms/*", (rreq, rres) => { + rres.sendFile(process.cwd()+"/website/helpdesk/forms/"+rreq.url.replace("/api/helpdesk/forms/","")) +}) + export { app } \ No newline at end of file diff --git a/website/helpdesk/forms/manifest.json b/website/helpdesk/forms/manifest.json new file mode 100644 index 0000000..9807937 --- /dev/null +++ b/website/helpdesk/forms/manifest.json @@ -0,0 +1,10 @@ +{ + "general_inquiry": "General Inquiry", + "legalrequest": "Legal Request", + "responsibledisclosure": "Responsible Disclosure", + "general_techsupport": "General Technical Support", + "ecls_deleteaccount": "ECLS: Delete Account", + "ecls_passwordreset": "ECLS: Password Reset", + "ecls_personalinfochange": "ECLS: Personal Information Change", + "enstrayedcloud_quotachange": "Enstrayed Cloud: Quota Change" +} \ No newline at end of file diff --git a/website/helpdesk/templates/landing.html b/website/helpdesk/templates/landing.html index 266e752..16ba4b7 100644 --- a/website/helpdesk/templates/landing.html +++ b/website/helpdesk/templates/landing.html @@ -4,30 +4,8 @@ Enstrayed Helpdesk - - + + @@ -88,9 +66,9 @@ -

Warning

-

This is a warning

- +

Warning

+

This is a warning

+
\ No newline at end of file diff --git a/website/helpdesk/templates/newticket.html b/website/helpdesk/templates/newticket.html new file mode 100644 index 0000000..d47a2e4 --- /dev/null +++ b/website/helpdesk/templates/newticket.html @@ -0,0 +1,56 @@ + + + + + + Enstrayed Helpdesk: New Ticket + + + + + + +
+

Enstrayed Helpdesk

+ Main Page + Knowledgebase + +
+ +
+
+
+
+

New Ticket

+ + +
+
+
+ +

Warning

+

This is a warning

+ +
+ + \ No newline at end of file diff --git a/website/static/helpdesk.css b/website/static/helpdesk/helpdesk.css similarity index 86% rename from website/static/helpdesk.css rename to website/static/helpdesk/helpdesk.css index 19426fd..084a94a 100644 --- a/website/static/helpdesk.css +++ b/website/static/helpdesk/helpdesk.css @@ -37,11 +37,16 @@ body { gap: 2em; } -.cardrow > div { +.cardrow > div, .newticketmaincontent { background-color: #fff; padding: 2em; } +.newticketmaincontent { + min-width: 80ch; + max-width: 80ch; +} + .cardrow > div > h1 { margin: 0 0 0.5em 0; } @@ -65,7 +70,7 @@ dialog { border: none; } -dialog > h2 { +dialog > h2, .newticketmaincontent > h2 { margin: 0 0 0.5em 0; } diff --git a/website/static/helpdesk/login.js b/website/static/helpdesk/login.js new file mode 100644 index 0000000..71d43a2 --- /dev/null +++ b/website/static/helpdesk/login.js @@ -0,0 +1,54 @@ +var globalLoggedIn = false + +function useGlobalDialog(title,body) { + document.getElementById("globalDialogHeader").innerText = title + document.getElementById("globalDialogText").innerText = body + document.getElementById("globalDialog").showModal() +} + +document.addEventListener("DOMContentLoaded", function () { + fetch(`/api/auth/whoami`).then(fetchRes => { + fetchRes.json().then(jsonRes => { + if (jsonRes.loggedIn) { + globalLoggedIn = true + document.getElementById("loginButton").innerText = `Logout ${jsonRes.username}` + } else { + globalLoggedIn = false + document.getElementById("loginButton").innerText = `Login` + } + }) + }) +}) + +function loginFunction() { + if (globalLoggedIn === true) { + fetch(`/api/auth/logout`).then(fetchRes => { + if (fetchRes.status === 200) { + globalLoggedIn = false + document.getElementById("loginButton").innerText = `Login` + } else { + fetchRes.text().then(textRes => { + useGlobalDialog("Error", `An error occurred during logout: ${textRes}`) + }) + } + }) + } else { + let loginWindow = window.open(`/api/auth/login?state=close`, `_blank`) + let loginWatcher = setInterval(() => { + if (loginWindow.closed) { + fetch(`/api/auth/whoami`).then(fetchRes => { + fetchRes.json().then(jsonRes => { + if (jsonRes.loggedIn) { + globalLoggedIn = true + document.getElementById("loginButton").innerText = `Logout ${jsonRes.username}` + } else { + useGlobalDialog("Error", `You are not logged in. Please try logging in again.`) + } + clearInterval(loginWatcher); + }) + }) + + } + }, 500); + } +} \ No newline at end of file