diff options
Diffstat (limited to 'src/routes/api/session')
| -rw-r--r-- | src/routes/api/session/current.zig | 23 | ||||
| -rw-r--r-- | src/routes/api/session/drop.zig | 8 | ||||
| -rw-r--r-- | src/routes/api/session/renew.zig | 8 | ||||
| -rw-r--r-- | src/routes/api/session/root.zig | 5 |
4 files changed, 44 insertions, 0 deletions
diff --git a/src/routes/api/session/current.zig b/src/routes/api/session/current.zig new file mode 100644 index 0000000..31c8476 --- /dev/null +++ b/src/routes/api/session/current.zig @@ -0,0 +1,23 @@ +const std = @import("std"); +const Context = @import("../../context.zig"); + +pub const access = .users; + +const Result = struct { + name: []const u8, + full_name: []const u8, + birthday: []const u8, +}; + +pub fn get(ctx: *Context) !Result { + const session = ctx.storage.sessions.get( + ctx.storage, + ctx.fingerprint, + ) orelse return error.UserDoesNotExist; + + return .{ + .name = session.info.name, + .full_name = session.info.full_name, + .birthday = session.info.birthday, + }; +} diff --git a/src/routes/api/session/drop.zig b/src/routes/api/session/drop.zig new file mode 100644 index 0000000..eacf8ce --- /dev/null +++ b/src/routes/api/session/drop.zig @@ -0,0 +1,8 @@ +const Context = @import("../../context.zig"); + +pub const access = .users; + +pub fn get(ctx: *Context) !void { + ctx.storage.sessions.remove(ctx.storage, ctx.fingerprint); + ctx.response.headers.fingerprint = ""; +} diff --git a/src/routes/api/session/renew.zig b/src/routes/api/session/renew.zig new file mode 100644 index 0000000..7dfa491 --- /dev/null +++ b/src/routes/api/session/renew.zig @@ -0,0 +1,8 @@ +const Context = @import("../../context.zig"); + +pub const access = .users; + +pub fn get(ctx: *Context) !void { + const new = try ctx.storage.sessions.renew(ctx.storage, ctx.fingerprint); + ctx.response.headers.fingerprint = new.fingerprint; +} diff --git a/src/routes/api/session/root.zig b/src/routes/api/session/root.zig new file mode 100644 index 0000000..ea155e5 --- /dev/null +++ b/src/routes/api/session/root.zig @@ -0,0 +1,5 @@ +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")); |