aboutsummaryrefslogtreecommitdiff
path: root/src/routes/api/session
diff options
context:
space:
mode:
Diffstat (limited to 'src/routes/api/session')
-rw-r--r--src/routes/api/session/current.zig23
-rw-r--r--src/routes/api/session/drop.zig8
-rw-r--r--src/routes/api/session/renew.zig8
-rw-r--r--src/routes/api/session/root.zig5
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"));