diff options
author | Borawski.Lukasz <lukasz.borawski@intel.com> | 2018-04-04 13:50:16 +0300 |
---|---|---|
committer | Ed Tanous <ed.tanous@intel.com> | 2018-07-25 20:29:23 +0300 |
commit | 4b1b8683d31260b3032bb9f9fcde1eadaed4e1e5 (patch) | |
tree | e42eb626b813a24db19bb8ed58709faa10e475b1 /include/token_authorization_middleware.hpp | |
parent | eb547730ed7f37a1d7c36d9785f6b0722cb8ef3d (diff) | |
download | bmcweb-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.hpp | 42 |
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 |