Skip to content

Commit

Permalink
Fix default behavior when none of the specified objects pass the user…
Browse files Browse the repository at this point in the history
…'s permission filter

fixes #11926
  • Loading branch information
gunnarbeutner committed Jun 13, 2016
1 parent a5abe1a commit 9e29a3f
Showing 1 changed file with 10 additions and 5 deletions.
15 changes: 10 additions & 5 deletions lib/remote/filterutility.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -211,10 +211,13 @@ std::vector<Value> FilterUtility::GetFilterTargets(const QueryDescription& qd, c
attr = "name";

if (query->Contains(attr)) {
Object::Ptr target = provider->GetTargetByName(type, HttpUtility::GetLastParameter(query, attr));
String name = HttpUtility::GetLastParameter(query, attr);
Object::Ptr target = provider->GetTargetByName(type, name);

if (FilterUtility::EvaluateFilter(permissionFrame, permissionFilter, target))
result.push_back(target);
if (!FilterUtility::EvaluateFilter(permissionFrame, permissionFilter, target))
BOOST_THROW_EXCEPTION(ScriptError("Access denied to object '" + name + "' of type '" + type + "'"));

result.push_back(target);
}

attr = provider->GetPluralName(type);
Expand All @@ -227,8 +230,10 @@ std::vector<Value> FilterUtility::GetFilterTargets(const QueryDescription& qd, c
BOOST_FOREACH(const String& name, names) {
Object::Ptr target = provider->GetTargetByName(type, name);

if (FilterUtility::EvaluateFilter(permissionFrame, permissionFilter, target))
result.push_back(target);
if (!FilterUtility::EvaluateFilter(permissionFrame, permissionFilter, target))
BOOST_THROW_EXCEPTION(ScriptError("Access denied to object '" + name + "' of type '" + type + "'"));

result.push_back(target);
}
}
}
Expand Down

0 comments on commit 9e29a3f

Please sign in to comment.