aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathan Reiner <nathan@nathanreiner.xyz>2025-11-15 12:00:50 +0100
committerNathan Reiner <nathan@nathanreiner.xyz>2025-11-15 12:00:50 +0100
commit69488029a8eafc55d42ae7e65ba8ddeebcfb8454 (patch)
treec0e90861d7f01a93908fa7ab428a0dab8da43d2a
parente8ff326f0e5bd61fb0a8c22c48f296fcf0249830 (diff)
implement auto-login when session still active
-rw-r--r--src/routes/api/session/is-valid.zig14
-rw-r--r--src/routes/api/session/root.zig1
-rw-r--r--static/api/session.js5
-rw-r--r--static/index.js6
4 files changed, 25 insertions, 1 deletions
diff --git a/src/routes/api/session/is-valid.zig b/src/routes/api/session/is-valid.zig
new file mode 100644
index 0000000..0c26040
--- /dev/null
+++ b/src/routes/api/session/is-valid.zig
@@ -0,0 +1,14 @@
+const std = @import("std");
+const Context = @import("../../context.zig");
+
+pub const access = .everyone;
+
+const Result = struct {
+ is_valid: bool
+};
+
+pub fn get(ctx: *Context) !Result {
+ return .{
+ .is_valid = ctx.storage.sessions.get(ctx.storage, ctx.fingerprint) != null
+ };
+}
diff --git a/src/routes/api/session/root.zig b/src/routes/api/session/root.zig
index ea155e5..0b85e20 100644
--- a/src/routes/api/session/root.zig
+++ b/src/routes/api/session/root.zig
@@ -3,3 +3,4 @@ const HandlerInfo = @import("../../handler-info.zig");
pub const current: HandlerInfo = .from_type(@import("current.zig"));
pub const drop: HandlerInfo = .from_type(@import("renew.zig"));
pub const renew: HandlerInfo = .from_type(@import("drop.zig"));
+pub const @"is-valid": HandlerInfo = .from_type(@import("is-valid.zig"));
diff --git a/static/api/session.js b/static/api/session.js
index b7e584b..a5f9c78 100644
--- a/static/api/session.js
+++ b/static/api/session.js
@@ -3,3 +3,8 @@ import * as rest from './rest.js';
export function current() {
return rest.get('/api/session/current');
}
+
+export async function is_valid() {
+ const result = await rest.get('/api/session/is-valid');
+ return result.is_valid;
+}
diff --git a/static/index.js b/static/index.js
index a7211e2..e9ef859 100644
--- a/static/index.js
+++ b/static/index.js
@@ -102,4 +102,8 @@ document.body.append(
month_select,
);
-login.focus();
+if (await api.session.is_valid()) {
+ login.hide();
+} else {
+ login.focus();
+}