blob: 6b941ba645e7800d1977035ac25a3c859592682c [file] [log] [blame]
#include "redfish_privileges.h"
#include <string>
#include <string_view>
#include <unordered_set>
#include "absl/strings/str_cat.h"
#include "absl/strings/str_join.h"
#include "nlohmann/json.hpp"
namespace milotic::authz {
std::unordered_set<std::string> RedfishPrivileges::GetPrivileges() const {
return privileges_;
}
bool RedfishPrivileges::IsSupersetOf(const RedfishPrivileges& other) const {
if (other.GetPrivileges().size() > privileges_.size()) {
return false;
}
// Iterate through the smaller set
for (const std::string& privilege : other.GetPrivileges()) {
if (privileges_.find(privilege) == privileges_.end()) {
return false;
}
}
return true;
}
void RedfishPrivileges::InsertPrivilege(std::string_view privilege) {
privileges_.insert(std::string(privilege));
}
nlohmann::json::object_t RedfishPrivileges::ToJson() const {
nlohmann::json::object_t redfish_privileges_json;
redfish_privileges_json["Privilege"] = nlohmann::json::array();
for (const std::string& privilege : privileges_) {
redfish_privileges_json["Privilege"].push_back(privilege);
}
return redfish_privileges_json;
}
std::string RedfishPrivileges::GetDebugString() const {
return absl::StrCat("|PeerPrivileges|={", absl::StrJoin(privileges_, ", "),
"}");
}
bool RedfishPrivileges::operator==(const RedfishPrivileges& other) const {
return privileges_ == other.privileges_;
}
} // namespace milotic::authz