diff options
| author | Nathan Reiner <nathan@nathanreiner.xyz> | 2025-11-15 12:00:50 +0100 |
|---|---|---|
| committer | Nathan Reiner <nathan@nathanreiner.xyz> | 2025-11-15 12:00:50 +0100 |
| commit | 69488029a8eafc55d42ae7e65ba8ddeebcfb8454 (patch) | |
| tree | c0e90861d7f01a93908fa7ab428a0dab8da43d2a | |
| parent | e8ff326f0e5bd61fb0a8c22c48f296fcf0249830 (diff) | |
implement auto-login when session still active
| -rw-r--r-- | src/routes/api/session/is-valid.zig | 14 | ||||
| -rw-r--r-- | src/routes/api/session/root.zig | 1 | ||||
| -rw-r--r-- | static/api/session.js | 5 | ||||
| -rw-r--r-- | static/index.js | 6 |
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(); +} |