summaryrefslogtreecommitdiff
path: root/include/token_authorization_middleware.hpp
diff options
context:
space:
mode:
authorBorawski.Lukasz <lukasz.borawski@intel.com>2018-04-04 13:50:16 +0300
committerEd Tanous <ed.tanous@intel.com>2018-07-25 20:29:23 +0300
commit4b1b8683d31260b3032bb9f9fcde1eadaed4e1e5 (patch)
treee42eb626b813a24db19bb8ed58709faa10e475b1 /include/token_authorization_middleware.hpp
parenteb547730ed7f37a1d7c36d9785f6b0722cb8ef3d (diff)
downloadbmcweb-4b1b8683d31260b3032bb9f9fcde1eadaed4e1e5.tar.xz
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>
Diffstat (limited to 'include/token_authorization_middleware.hpp')
-rw-r--r--include/token_authorization_middleware.hpp42
1 files changed, 23 insertions, 19 deletions
diff --git a/include/token_authorization_middleware.hpp b/include/token_authorization_middleware.hpp
index a40469fea2..f151e4ff63 100644
--- a/include/token_authorization_middleware.hpp
+++ b/include/token_authorization_middleware.hpp
@@ -76,7 +76,7 @@ class Middleware {
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 @@ class Middleware {
// 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 @@ class Middleware {
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 @@ class Middleware {
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 @@ class Middleware {
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 @@ void request_routes(Crow<Middlewares...>& app) {
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 @@ void request_routes(Crow<Middlewares...>& app) {
});
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