50 lines
1.3 KiB
Zig
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);
|
|
}
|
|
|