improved Has method in LabelPermissions; LabelChecker lambda reworked a bit
This commit is contained in:
parent
19dff1ae5c
commit
3a183986c9
@ -190,11 +190,11 @@ LabelPermissions::LabelPermissions(const std::unordered_set<std::string> &grants
|
||||
: grants_(grants), denies_(denies) {}
|
||||
|
||||
PermissionLevel LabelPermissions::Has(const std::string &permission) const {
|
||||
if (denies_.find(permission) != denies_.end()) {
|
||||
if ((denies_.size() == 1 && denies_.find(ASTERISK) != denies_.end()) || denies_.find(permission) != denies_.end()) {
|
||||
return PermissionLevel::DENY;
|
||||
}
|
||||
|
||||
if (grants_.find(permission) != denies_.end()) {
|
||||
if ((grants_.size() == 1 && grants_.find(ASTERISK) != grants_.end()) || grants_.find(permission) != denies_.end()) {
|
||||
return PermissionLevel::GRANT;
|
||||
}
|
||||
|
||||
|
@ -264,13 +264,8 @@ class LabelChecker final : public memgraph::query::LabelChecker {
|
||||
explicit LabelChecker(memgraph::auth::User *user, memgraph::query::DbAccessor *dba) : user_{user}, dba_(dba) {}
|
||||
|
||||
bool IsUserAuthorized(const std::vector<memgraph::storage::LabelId> &labels) const final {
|
||||
const auto user_label_permissions = user_->GetLabelPermissions();
|
||||
auto *dba = dba_;
|
||||
|
||||
if (user_label_permissions.Has("*") == memgraph::auth::PermissionLevel::GRANT) return true;
|
||||
|
||||
return std::all_of(labels.begin(), labels.end(), [&user_label_permissions, dba](const auto label) {
|
||||
return user_label_permissions.Has(dba->LabelToName(label)) == memgraph::auth::PermissionLevel::GRANT;
|
||||
return std::any_of(labels.begin(), labels.end(), [this](const auto label) {
|
||||
return user_->GetLabelPermissions().Has(dba_->LabelToName(label)) == memgraph::auth::PermissionLevel::GRANT;
|
||||
});
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user