From 870d50baeba627b5b81787360fce7e009e31ddcc Mon Sep 17 00:00:00 2001 From: Tina_Azure <-> Date: Sat, 22 Apr 2023 23:12:24 +0200 Subject: [PATCH] Logout Route Handler --- src/main.cpp | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 39d854e..3e3f943 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -235,19 +235,22 @@ int main(int argc, char *argv[]) { /* * Logs out a freelancer by replacing validation key and expiring cookies */ + CROW_ROUTE(app, "/freelancer/logout") + ([&, configuration](const crow::request& getRequest, crow::response& res) { auto& ctx = app.get_context(getRequest); - // Read cookies with get_cookie - auto value = ctx.get_cookie("cookieloggedin"); - if (value.compare("true") != 0) { - value = "false"; - ctx.set_cookie("cookieloggedin", "true"); + pqxx::connection databaseConnection(configuration.databaseConnectionString); + string loginKey = ctx.get_cookie("loginKey"); + string freelancerEmail = ctx.get_cookie("freelancerEmail"); + if (!freelancerEmail.empty() && !loginKey.empty()) { + if (Utilities::checkFreelancerLoginState(configuration, loginKey, freelancerEmail)) { + Database::executePreparedStatement_UPDATE_LOGIN_VALIDATION_KEY(databaseConnection, "EXPIRED", freelancerEmail); + ctx.set_cookie("loginKey", Utilities::generateExpiredCookie()); + ctx.set_cookie("freelancerEmail", Utilities::generateExpiredCookie()); + } } - else - { - ctx.set_cookie("cookieloggedin", "false"); - } - return "cookieloggedin: " + value;*/ - + res.redirect("/"); + res.end(); + }); /*