From 30cf0fd22e492fd2b0052ddfd5b808da51b36052 Mon Sep 17 00:00:00 2001 From: Paul-Christian Volkmer Date: Thu, 18 Jan 2024 14:13:15 +0100 Subject: feat #29: add initial support for mtbfile api tokens --- .../db/migration/mariadb/V0_2_0__Tokens.sql | 8 +++++ .../db/migration/postgresql/V0_2_0__Tokens.sql | 9 +++++ src/main/resources/static/scripts.js | 7 ++-- src/main/resources/static/style.css | 24 +++++++++++-- src/main/resources/templates/configs.html | 4 +++ src/main/resources/templates/configs/tokens.html | 39 ++++++++++++++++++++++ src/main/resources/templates/login.html | 2 +- 7 files changed, 88 insertions(+), 5 deletions(-) create mode 100644 src/main/resources/db/migration/mariadb/V0_2_0__Tokens.sql create mode 100644 src/main/resources/db/migration/postgresql/V0_2_0__Tokens.sql create mode 100644 src/main/resources/templates/configs/tokens.html (limited to 'src/main/resources') diff --git a/src/main/resources/db/migration/mariadb/V0_2_0__Tokens.sql b/src/main/resources/db/migration/mariadb/V0_2_0__Tokens.sql new file mode 100644 index 0000000..98e27d9 --- /dev/null +++ b/src/main/resources/db/migration/mariadb/V0_2_0__Tokens.sql @@ -0,0 +1,8 @@ +CREATE TABLE IF NOT EXISTS token +( + id int auto_increment primary key, + name varchar(255) not null, + username varchar(255) not null unique, + password varchar(255) not null, + created_at datetime default utc_timestamp() not null +); \ No newline at end of file diff --git a/src/main/resources/db/migration/postgresql/V0_2_0__Tokens.sql b/src/main/resources/db/migration/postgresql/V0_2_0__Tokens.sql new file mode 100644 index 0000000..c89c52e --- /dev/null +++ b/src/main/resources/db/migration/postgresql/V0_2_0__Tokens.sql @@ -0,0 +1,9 @@ +CREATE TABLE IF NOT EXISTS token +( + id serial, + name varchar(255) not null, + username varchar(255) not null unique, + password varchar(255) not null, + created_at timestamp with time zone default now() not null, + PRIMARY KEY (id) +); \ No newline at end of file diff --git a/src/main/resources/static/scripts.js b/src/main/resources/static/scripts.js index 73ad71b..fdd3f52 100644 --- a/src/main/resources/static/scripts.js +++ b/src/main/resources/static/scripts.js @@ -4,14 +4,17 @@ const dateFormat = new Intl.DateTimeFormat('de-DE', dateFormatOptions); const dateTimeFormatOptions = { year: 'numeric', month: '2-digit', day: '2-digit', hour: '2-digit', minute: 'numeric', second: 'numeric' }; const dateTimeFormat = new Intl.DateTimeFormat('de-DE', dateTimeFormatOptions); -window.addEventListener('load', () => { +const formatTimeElements = () => { Array.from(document.getElementsByTagName('time')).forEach((timeTag) => { let date = Date.parse(timeTag.getAttribute('datetime')); if (! isNaN(date)) { timeTag.innerText = dateTimeFormat.format(date); } }); -}); +}; + +window.addEventListener('load', formatTimeElements); +window.addEventListener('htmx:afterRequest', formatTimeElements); function drawPieChart(url, elemId, title, data) { if (data) { diff --git a/src/main/resources/static/style.css b/src/main/resources/static/style.css index e2bf65a..3249aad 100644 --- a/src/main/resources/static/style.css +++ b/src/main/resources/static/style.css @@ -202,13 +202,15 @@ form.samplecode-input input:focus-visible { background: none; } -.login-form form * { +.login-form form *, +.token-form form * { padding: 0.5em; border: 1px solid var(--table-border); border-radius: 3px; } -.login-form button { +.login-form button, +.token-form button { margin: 1em 0; background: var(--bg-blue); color: white; @@ -535,4 +537,22 @@ a.reload { font-size: .6em; align-content: center; justify-content: center; +} + +.new-token { + padding: 1em; + background: var(--bg-green-op); +} + +.new-token > pre { + margin: 0; + border: 1px solid var(--bg-green); + padding: .5em; + width: max-content; + display: inline-block; +} + +.no-token { + padding: 1em; + background: var(--bg-red-op); } \ No newline at end of file diff --git a/src/main/resources/templates/configs.html b/src/main/resources/templates/configs.html index 3c3d744..ebef7ca 100644 --- a/src/main/resources/templates/configs.html +++ b/src/main/resources/templates/configs.html @@ -37,6 +37,9 @@ +
+
+
@@ -86,6 +89,7 @@
+ diff --git a/src/main/resources/templates/configs/tokens.html b/src/main/resources/templates/configs/tokens.html new file mode 100644 index 0000000..e707fbf --- /dev/null +++ b/src/main/resources/templates/configs/tokens.html @@ -0,0 +1,39 @@ +
+

Tokens

+

Die Verwendung von Tokens ist nicht aktiviert.

+
+ +
+

Tokens

+
+
Noch keine Tokens vorhanden.
+ + + + + + + + + + + + + + + +
NameErstellt
[[ ${token.name} ]]
+
+ Verwendung über HTTP-Basic. Bitte notieren, wird nicht erneut angezeigt:
[[ ${newTokenValue} ]]
+
+
+ Das Token konnte nicht erzeugt werden. Versuchen Sie einen anderen Namen. +
+
+
+ + +
+
+
+
\ No newline at end of file diff --git a/src/main/resources/templates/login.html b/src/main/resources/templates/login.html index 018122d..9a63b46 100644 --- a/src/main/resources/templates/login.html +++ b/src/main/resources/templates/login.html @@ -15,7 +15,7 @@
- +
-- cgit v1.2.3