From 3f18f02d07802d1fc705a500e5978a9b3cb2e751 Mon Sep 17 00:00:00 2001 From: Nathan Reiner Date: Fri, 14 Nov 2025 21:55:59 +0100 Subject: implement login --- src/routes/root.zig | 55 +++++++---------------------------------------------- 1 file changed, 7 insertions(+), 48 deletions(-) (limited to 'src/routes/root.zig') diff --git a/src/routes/root.zig b/src/routes/root.zig index 01952bb..dbfce32 100644 --- a/src/routes/root.zig +++ b/src/routes/root.zig @@ -1,56 +1,15 @@ const std = @import("std"); -pub const fallback = @import("fallback.zig"); -pub const login = @import("login.zig"); +pub const HandlerInfo = @import("handler-info.zig"); -pub const HandlerInfo = struct { - handler: *const fn ( - request: *std.http.Server.Request, - allocator: std.mem.Allocator, - ) anyerror!void, - needs_auth: bool, - method: std.http.Method, - - pub fn handle( - self: *const @This(), - request: *std.http.Server.Request, - allocator: std.mem.Allocator, - ) !void { - if (request.head.method != self.method) { - try request.respond("{ \"error\": \"Bad Request\" }", .{ .status = .bad_request }); - } - - self.handler(request, allocator) catch |err| { - const response, const status_code: std.http.Status = switch (err) { - error.BadRequest => .{ "{ \"error\": \"Bad Request\" }", .bad_request }, - error.Unauthorized => .{ "{ \"error\": \"Unauthorized\" }", .unauthorized }, - error.Forbidden => .{ "{ \"error\": \"Forbidden\" }", .forbidden }, - error.NotFound => .{ "{ \"error\": \"Not Found\" }", .not_found }, - else => .{ "{ \"error\": \"Internal Server Error\" }", .internal_server_error }, - }; - - try request.respond(response, .{ .status = status_code }); - }; - } -}; +pub const Context = @import("context.zig"); +pub const api = @import("api/root.zig"); +pub const fallback: HandlerInfo = .from_type(@import("fallback.zig")); pub const handlers = std.StaticStringMap(HandlerInfo).initComptime(.{ - .{ - "", - HandlerInfo { - .handler = fallback.handler, - .needs_auth = false, - .method = .GET, - } - }, - .{ - "/api/login", - HandlerInfo { - .handler = login.handler, - .needs_auth = false, - .method = .POST, - } - }, + .{ "", fallback }, + .{ "/api/auth/login", api.auth.login }, + .{ "/api/auth/first-login", api.auth.first_login }, }); pub fn get(path: []const u8) HandlerInfo { -- cgit v1.2.3-70-g09d2