Skip to content

Commit 76dfdca

Browse files
authored
Merge pull request #31 from protegeproject/fix-checking-capability-closure
Fixes who-icatx/icatx-project#274
2 parents 2c485f2 + 020e731 commit 76dfdca

File tree

2 files changed

+4
-3
lines changed

2 files changed

+4
-3
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
</parent>
1111
<groupId>edu.stanford.protege</groupId>
1212
<artifactId>webprotege-authorization-service</artifactId>
13-
<version>3.0.4</version>
13+
<version>3.0.5-SNAPSHOT</version>
1414
<name>webprotege-authorization-service</name>
1515
<description>A service that checks users are authorized to execute operations in WebProtége</description>
1616
<properties>

src/main/java/edu/stanford/protege/webprotege/authorization/AccessManagerImpl.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -267,9 +267,9 @@ private Collection<Subject> getSubjectsWithAccessToResource(Resource resource, O
267267
try {
268268
var projectId = toProjectIdString(resource);
269269
var query = query(where(PROJECT_ID).is(projectId));
270-
capability.ifPresent(a -> query.addCriteria(where(CAPABILITY_CLOSURE).in(a.id())));
271270
return find(query)
272271
.map(f -> objectMapper.convertValue(f, RoleAssignment.class))
272+
.filter(ra -> capability.map(cap -> ra.getCapabilityClosure().contains(cap)).orElse(true))
273273
.map(ra -> {
274274
var userName = ra.getUserName();
275275
return userName.map(Subject::forUser).orElseGet(Subject::forAnySignedInUser);
@@ -285,9 +285,10 @@ public Collection<Resource> getResourcesAccessibleToSubject(Subject subject, Cap
285285
lock.readLock().lock();
286286
try {
287287
var userName = toUserName(subject);
288-
var query = query(where(USER_NAME).is(userName).and(CAPABILITY_CLOSURE).is(capability.id()));
288+
var query = query(where(USER_NAME).is(userName));
289289
return find(query)
290290
.map(f -> objectMapper.convertValue(f, RoleAssignment.class))
291+
.filter(ra -> ra.getCapabilityClosure().contains(capability))
291292
.map(ra -> {
292293
var projectId = ra.getProjectId();
293294
if (projectId.isPresent()) {

0 commit comments

Comments
 (0)