yuzucchii.xyz/src/app/views/logout.zig
2025-05-03 20:42:44 -05:00

50 lines
1.3 KiB
Zig

const std = @import("std");
const jetzig = @import("jetzig");
pub fn index(request: *jetzig.Request) !jetzig.View {
return request.render(.ok);
}
pub fn post(request: *jetzig.Request) !jetzig.View {
// delete entry
const cookies = try request.cookies();
const session = cookies.get("session") orelse {
return request.redirect("/login", .moved_permanently);
};
const query = jetzig.database.Query(.Session)
.findBy(.{ .session_id = session.value });
_ = request.repo.execute(query) catch {
return request.redirect("/login", .moved_permanently);
};
// delete it
const delete_query = jetzig.database.Query(.Session)
.delete()
.where(.{ .{ .session_id, .eql, session.value } });
_ = request.repo.execute(delete_query) catch {
return request.fail(.internal_server_error);
};
// delete cookie
try cookies.put(.{
.name = "session",
.value = "",
.path = "/",
.max_age = 0,
.http_only = true,
.secure = false,
.expires = 0,
});
try request.headers.append("Set-Cookie",
"session=; Path=/; Max-Age=0; HttpOnly; Secure; SameSite=Lax");
std.debug.print("Deleting session cookie at path: {?s}\n", .{session.path});
return request.render(.ok);
}