Skip to content

Commit 42da984

Browse files
committed
fix: return empty list when name does not exist in getRoles function.
1 parent ff7a62e commit 42da984

File tree

3 files changed

+22
-8
lines changed

3 files changed

+22
-8
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
p, alice, data1, read
2+
p, bob, data2, write
3+
p, data1_admin, data1, read
4+
p, data1_admin, data1, write
5+
p, data2_admin, data2, read
6+
p, data2_admin, data2, write

src/main/java/org/casbin/jcasbin/rbac/DefaultRoleManager.java

+4-8
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,7 @@
1414

1515
package org.casbin.jcasbin.rbac;
1616

17-
import java.util.ArrayList;
18-
import java.util.HashMap;
19-
import java.util.HashSet;
20-
import java.util.List;
21-
import java.util.Map;
22-
import java.util.Set;
17+
import java.util.*;
2318
import java.util.function.BiPredicate;
2419

2520
import org.casbin.jcasbin.util.Util;
@@ -53,7 +48,7 @@ public DefaultRoleManager(int maxHierarchyLevel) {
5348
* e.loadPolicy();
5449
* </pre>
5550
*
56-
*
51+
*
5752
* @param maxHierarchyLevel the maximized allowed RBAC hierarchy level.
5853
* @param matchingFunc a matcher for supporting pattern in g
5954
* @param domainMatchingFunc a matcher for supporting domain pattern in g
@@ -216,7 +211,8 @@ public List<String> getRoles(String name, String... domain) {
216211
final DomainRoles allRoles = getMatchingDomainRoles(domain);
217212

218213
if (!allRoles.hasRole(name, matchingFunc)) {
219-
throw new IllegalArgumentException("error: name does not exist");
214+
Util.logPrintfError("error: name does not exist");
215+
return Collections.emptyList();
220216
}
221217

222218
return allRoles.createRole(name, matchingFunc).getRoles();

src/test/java/org/casbin/jcasbin/main/SyncedRbacAPIUnitTest.java

+12
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616

1717
import org.junit.Test;
1818

19+
import java.util.Collections;
20+
1921
import static java.util.Arrays.asList;
2022
import static org.casbin.jcasbin.main.TestUtil.*;
2123
import static org.junit.Assert.assertEquals;
@@ -153,4 +155,14 @@ public void testImplicitPermissionAPI() {
153155
);
154156

155157
}
158+
159+
@Test
160+
public void testImplicitPermissionWithoutRoleAPI() {
161+
Enforcer e = new SyncedEnforcer("examples/rbac_model.conf", "examples/rbac_with_hierarchy_policy_without_role.csv");
162+
assertEquals(
163+
e.getImplicitPermissionsForUser("alice"),
164+
Collections.singletonList(asList("alice", "data1", "read"))
165+
);
166+
167+
}
156168
}

0 commit comments

Comments
 (0)