diff options
Diffstat (limited to 'redfish-core/include/node.hpp')
-rw-r--r-- | redfish-core/include/node.hpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/redfish-core/include/node.hpp b/redfish-core/include/node.hpp index 936e19f7e3..fddeaa01e5 100644 --- a/redfish-core/include/node.hpp +++ b/redfish-core/include/node.hpp @@ -168,6 +168,27 @@ class Node res.result(boost::beast::http::status::method_not_allowed); res.end(); } + + /* @brief Would the operation be allowed if the user did not have + * the ConfigureSelf Privilege? + * + * @param req the request + * + * @returns True if allowed, false otherwise + */ + inline bool isAllowedWithoutConfigureSelf(const crow::Request& req) + { + const std::string& userRole = + crow::persistent_data::UserRoleMap::getInstance().getUserRole( + req.session->username); + Privileges effectiveUserPrivileges = + redfish::getUserPrivileges(userRole); + effectiveUserPrivileges.resetSinglePrivilege("ConfigureSelf"); + const auto& requiredPrivilegesIt = entityPrivileges.find(req.method()); + return (requiredPrivilegesIt != entityPrivileges.end()) && + isOperationAllowedWithPrivileges(requiredPrivilegesIt->second, + effectiveUserPrivileges); + } }; } // namespace redfish |