summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorcurly <curly@infernal.garden>2024-07-17 16:49:02 -0600
committercurly <curly@infernal.garden>2024-07-17 16:49:02 -0600
commit38bbeda4d654769a0d3c6d3a3a35851f1dc2c8ac (patch)
tree9ba175bbc0fcd44b84fdec13762cadd22c0e20c3 /src
parent1b239cf6a10fda1b3dc5b1a2f4009219470d5e5d (diff)
downloadpoko_web-38bbeda4d654769a0d3c6d3a3a35851f1dc2c8ac.tar.gz
poko_web-38bbeda4d654769a0d3c6d3a3a35851f1dc2c8ac.tar.bz2
poko_web-38bbeda4d654769a0d3c6d3a3a35851f1dc2c8ac.zip
admin page, add keys
Diffstat (limited to 'src')
-rw-r--r--src/admin/index.html31
-rw-r--r--src/admin/regkeys/index.html57
-rw-r--r--src/main.js66
3 files changed, 152 insertions, 2 deletions
diff --git a/src/admin/index.html b/src/admin/index.html
new file mode 100644
index 0000000..16e459f
--- /dev/null
+++ b/src/admin/index.html
@@ -0,0 +1,31 @@
+<!DOCTYPE html>
+ <head>
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <link rel="stylesheet" href="/main.css">
+ <script src="/main.js" defer></script>
+ <title>USER</title>
+ </head>
+ <body>
+ <header>
+ <a href="/user/">
+ <center class="button navbutton">USER</center>
+ </a>
+ <a href="/admin/regkeys/">
+ <center class="button navbutton">REGISTRATION KEYS</center>
+ </a>
+ </header>
+ <div class="page">
+ <center>
+ <h2>ADMIN</h2>
+ </center>
+ <hr>
+ <div class="content">
+ </div>
+ </div>
+ <footer>
+ <center>
+ <p>POKO</p>
+ </center>
+ </footer>
+ </body>
+</html> \ No newline at end of file
diff --git a/src/admin/regkeys/index.html b/src/admin/regkeys/index.html
new file mode 100644
index 0000000..de6ecf1
--- /dev/null
+++ b/src/admin/regkeys/index.html
@@ -0,0 +1,57 @@
+<!DOCTYPE html>
+ <head>
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <link rel="stylesheet" href="/main.css">
+ <script src="/main.js" defer></script>
+ <title>REGISTRATION KEYS</title>
+ </head>
+ <body onload="update_form_onload()">
+ <header>
+ <a href="/user/">
+ <center class="button navbutton">USER</center>
+ </a>
+ <a href="/admin/regkeys/">
+ <center class="button navbutton">REGISTRATION KEYS</center>
+ </a>
+ </header>
+ <div class="page">
+ <center>
+ <h2>ADD KEY</h2>
+ </center>
+ <hr>
+ <div class="content">
+ <form action="javascript:add_regkey_form()" class="formbox" id="nameform" accept-charset=utf-8>
+ <label for="key_add">KEY TO ADD</label>
+ <input type="text" id="key_add" required minlength="12">
+ <input type="submit" class="button formbutton" value="ADD">
+ </form>
+ </div>
+ </div>
+ <div class="page">
+ <center>
+ <h2>DELETE KEY</h2>
+ </center>
+ <hr>
+ <div class="content">
+ <form action="javascript:del_regkey_form()" class="formbox" accept-charset="utf-8">
+ <label for="key_del">KEY TO DELETE</label>
+ <input type="text" id="key_del" required>
+ <input type="submit" class="button formbutton" value="DELETE">
+ </form>
+ </div>
+ </div>
+ <div class="page">
+ <center>
+ <h2>KEY LIST</h2>
+ </center>
+ <hr>
+ <div class="content" id="keylist">
+ </div>
+ </div>
+ <footer>
+ <center>
+ <p>POKO</p>
+ </center>
+ </footer>
+ </body>
+</html> \ No newline at end of file
diff --git a/src/main.js b/src/main.js
index e6d9264..cd27d54 100644
--- a/src/main.js
+++ b/src/main.js
@@ -310,9 +310,37 @@ async function update_name_form() {
}
+async function is_admin() {
+ const session = get_session();
+ const id = get_id();
+
+ if (session != "") {
+ if (id != "") {
+ const url = server + "/user/get"
+ const body = {"id": id, "session": session}
+ const req = await xhttp_post(url, body);
+
+ if (req.status == 200) {
+ if (req.body.is_admin == true) {
+ return true
+ }
+ } else if (req.status == 404) {
+ if (req.body == "Not Authenticated") {
+ del_session()
+ return false
+ }
+ }
+ } else {
+ del_session()
+ }
+ }
+
+ return false
+}
+
window.onload = async function() {
- // if not on a user page
- if (window.location.pathname.indexOf("/user") == -1) {
+ // if not on a user page and not an admin page
+ if (window.location.pathname.indexOf("/user") == -1 && window.location.pathname.indexOf("/admin") == -1) {
// and if logged in
if (await is_logged_in()) {
// move to the user index page
@@ -320,6 +348,40 @@ window.onload = async function() {
}
} else if (window.location.pathname == "/user/") {
await user()
+ } else if (window.location.pathname == "/admin/regkeys/") {
+ await regkeys()
+ }
+
+ if (await is_admin()) {
+ const elements = document.getElementsByTagName("header");
+ for (x in elements) {
+ elements[x].innerHTML += `
+ <a href="/admin/">
+ <center class="button navbutton">ADMIN</center>
+ </a>
+ `
+ }
+ }
+}
+
+async function regkeys() {
+ const list = document.getElementById("keylist");
+ list.innerHTML = "NOT IMPLEMENTED"
+}
+
+async function add_regkey_form() {
+ const id = get_id();
+ const session = get_session();
+ const key = document.getElementById("key_add").value;
+
+ const url = server + "/admin/regkey/new"
+ const body = {"id": id, "session": session, "key": key}
+ const req = await xhttp_post(url, body);
+
+ if (req.status == 200) {
+ window.location.href = window.location.href
+ } else {
+ alert(req.status + ": " + req.body)
}
}