Make SessionStore a proper singleton
- SessionStore class now has a proper singleton structure
- session_storage_singleton.hpp is removed
- from_json(..) function for SessionStore is changed to a specialized
template
- minor cosmetic fixes added
- Move the template class usages of Crow App over to a non-template
parameter
Change-Id: Ic9effd5b7bac089a84c80a0caa97bd46d4984416
Signed-off-by: Borawski.Lukasz <lukasz.borawski@intel.com>
Signed-off-by: Ed Tanous <ed.tanous@intel.com>
diff --git a/include/token_authorization_middleware.hpp b/include/token_authorization_middleware.hpp
index a40469f..f151e4f 100644
--- a/include/token_authorization_middleware.hpp
+++ b/include/token_authorization_middleware.hpp
@@ -76,7 +76,7 @@
if (ctx.session != nullptr &&
ctx.session->persistence ==
crow::PersistentData::PersistenceType::SINGLE_REQUEST) {
- PersistentData::session_store->remove_session(ctx.session);
+ PersistentData::SessionStore::getInstance().remove_session(ctx.session);
}
}
@@ -114,7 +114,7 @@
// needed.
// This whole flow needs to be revisited anyway, as we can't be
// calling directly into pam for every request
- return PersistentData::session_store->generate_user_session(
+ return PersistentData::SessionStore::getInstance().generate_user_session(
user, crow::PersistentData::PersistenceType::SINGLE_REQUEST);
}
@@ -123,7 +123,9 @@
CROW_LOG_DEBUG << "[AuthMiddleware] Token authentication";
boost::string_view token = auth_header.substr(strlen("Token "));
- auto session = PersistentData::session_store->login_session_by_token(token);
+ auto session =
+ PersistentData::SessionStore::getInstance().login_session_by_token(
+ token);
return session;
}
@@ -135,7 +137,9 @@
if (token.empty()) {
return nullptr;
}
- auto session = PersistentData::session_store->login_session_by_token(token);
+ auto session =
+ PersistentData::SessionStore::getInstance().login_session_by_token(
+ token);
return session;
}
@@ -161,7 +165,8 @@
cookie_value.substr(start_index, end_index - start_index);
const std::shared_ptr<crow::PersistentData::UserSession> session =
- PersistentData::session_store->login_session_by_token(auth_key);
+ PersistentData::SessionStore::getInstance().login_session_by_token(
+ auth_key);
if (session == nullptr) {
return nullptr;
}
@@ -303,8 +308,8 @@
if (!pam_authenticate_user(username, password)) {
res.result(boost::beast::http::status::unauthorized);
} else {
- auto session =
- PersistentData::session_store->generate_user_session(username);
+ auto session = PersistentData::SessionStore::getInstance()
+ .generate_user_session(username);
if (looks_like_ibm) {
// IBM requires a very specific login structure, and doesn't
@@ -341,18 +346,17 @@
});
CROW_ROUTE(app, "/logout")
- .methods("POST"_method)(
- [&](const crow::request& req, crow::response& res) {
- auto& session =
- app.template get_context<TokenAuthorization::Middleware>(req)
- .session;
- if (session != nullptr) {
- PersistentData::session_store->remove_session(session);
- }
- res.end();
- return;
-
- });
+ .methods(
+ "POST"_method)([&](const crow::request& req, crow::response& res) {
+ auto& session =
+ app.template get_context<TokenAuthorization::Middleware>(req)
+ .session;
+ if (session != nullptr) {
+ PersistentData::SessionStore::getInstance().remove_session(session);
+ }
+ res.end();
+ return;
+ });
}
} // namespace TokenAuthorization
} // namespace crow