diff --git a/src/main.cpp b/src/main.cpp index 0c32218..83aa3af 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -259,16 +259,13 @@ int main(int argc, char *argv[]) { CROW_ROUTE(app, "/freelancer/logout") ([&, configuration](const crow::request& getRequest, crow::response& res) { auto& ctx = app.get_context(getRequest); - 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::prepareStatement(databaseConnection, ID_UPDATE_LOGIN_VALIDATION_KEY); - Database::executePreparedStatement_UPDATE_LOGIN_VALIDATION_KEY(databaseConnection, "EXPIRED", freelancerEmail); - ctx.set_cookie("loginKey", Utilities::generateExpiredCookie()); - ctx.set_cookie("freelancerEmail", Utilities::generateExpiredCookie()); - } + if (Utilities::checkCookieLoginState(configuration, ctx)) { + std::string freelancerEmail = ctx.get_cookie("freelancerEmail"); + pqxx::connection databaseConnection(configuration.databaseConnectionString); + Database::prepareStatement(databaseConnection, ID_UPDATE_LOGIN_VALIDATION_KEY); + Database::executePreparedStatement_UPDATE_LOGIN_VALIDATION_KEY(databaseConnection, "EXPIRED", freelancerEmail); + ctx.set_cookie("loginKey", Utilities::generateExpiredCookie()); + ctx.set_cookie("freelancerEmail", Utilities::generateExpiredCookie()); } res.redirect("/"); res.end(); @@ -281,13 +278,10 @@ int main(int argc, char *argv[]) { CROW_ROUTE(app, "/freelancer/login") ([&,configuration](const crow::request& getRequest ) { auto& ctx = app.get_context(getRequest); - string loginKey = ctx.get_cookie("loginKey"); - string freelancerEmail = ctx.get_cookie("freelancerEmail"); string templateHTML = "freelancer_Login.html"; - if (!freelancerEmail.empty() && !loginKey.empty()) { - if (Utilities::checkFreelancerLoginState(configuration, loginKey, freelancerEmail)) - templateHTML = "freelancer_Redirect_Profile.html"; - } + if (Utilities::checkCookieLoginState(configuration, ctx)) + templateHTML = "freelancer_Redirect_Profile.html"; + auto page = crow::mustache::load(templateHTML); return page.render(); }); diff --git a/src/utilities.cpp b/src/utilities.cpp index aa4bc4e..bc12435 100644 --- a/src/utilities.cpp +++ b/src/utilities.cpp @@ -424,4 +424,20 @@ namespace Utilities { std::string generateExpiredCookie() { return "EXPIRED; HttpOnly; Secure; Path=/; Max-Age=0"; } -} \ No newline at end of file + + /* + * checks if the given cookiecontext contains a valid logged in cookie + * takes configuration and crow::CookieParser::context + */ + bool checkCookieLoginState(const Utilities::config& configuration, const crow::CookieParser::context& ctx) { + bool loginValid = false; + std::string loginKey = ctx.get_cookie("loginKey"); + std::string freelancerEmail = ctx.get_cookie("freelancerEmail"); + if (!freelancerEmail.empty() && !loginKey.empty()) + if (Utilities::checkFreelancerLoginState(configuration, loginKey, freelancerEmail)) + loginValid = true; + + return loginValid; + } +} +#endif \ No newline at end of file