diff options
Diffstat (limited to 'include/sessions.hpp')
-rw-r--r-- | include/sessions.hpp | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/include/sessions.hpp b/include/sessions.hpp index df65d6155d..749349476c 100644 --- a/include/sessions.hpp +++ b/include/sessions.hpp @@ -339,6 +339,43 @@ struct UserSession } }; +struct AuthConfigMethods +{ + bool xtoken = true; + bool cookie = true; + bool sessionToken = true; + bool basic = true; + + void fromJson(const nlohmann::json& j) + { + for (const auto& element : j.items()) + { + const bool* value = element.value().get_ptr<const bool*>(); + if (value == nullptr) + { + continue; + } + + if (element.key() == "XToken") + { + xtoken = *value; + } + else if (element.key() == "Cookie") + { + cookie = *value; + } + else if (element.key() == "SessionToken") + { + sessionToken = *value; + } + else if (element.key() == "BasicAuth") + { + basic = *value; + } + } + } +}; + class Middleware; class SessionStore @@ -445,6 +482,17 @@ class SessionStore return ret; } + void updateAuthMethodsConfig(const AuthConfigMethods& config) + { + authMethodsConfig = config; + needWrite = true; + } + + AuthConfigMethods& getAuthMethodsConfig() + { + return authMethodsConfig; + } + bool needsWrite() { return needWrite; @@ -501,6 +549,7 @@ class SessionStore std::random_device rd; bool needWrite{false}; std::chrono::minutes timeoutInMinutes; + AuthConfigMethods authMethodsConfig; }; } // namespace persistent_data @@ -526,4 +575,16 @@ struct adl_serializer<std::shared_ptr<crow::persistent_data::UserSession>> } } }; + +template <> struct adl_serializer<crow::persistent_data::AuthConfigMethods> +{ + static void to_json(nlohmann::json& j, + const crow::persistent_data::AuthConfigMethods& c) + { + j = nlohmann::json{{"XToken", c.xtoken}, + {"Cookie", c.cookie}, + {"SessionToken", c.sessionToken}, + {"BasicAuth", c.basic}}; + } +}; } // namespace nlohmann |