diff --git a/src/main/java/org/casbin/jcasbin/main/Frontend.java b/src/main/java/org/casbin/jcasbin/main/Frontend.java index e035cc7..dc7660a 100644 --- a/src/main/java/org/casbin/jcasbin/main/Frontend.java +++ b/src/main/java/org/casbin/jcasbin/main/Frontend.java @@ -27,16 +27,20 @@ public static String casbinJsGetPermissionForUser(Enforcer e, String user) { Model model = e.getModel(); Map m = new HashMap<>(); m.put("m", model.saveModelToText().trim()); - List> policies = new ArrayList<>(); - for (String ptype : model.model.get("p").keySet()) { - List> policy = model.getPolicy("p", ptype); - for (List p : policy) { - List tmp = new ArrayList<>(p); - tmp.add(0, ptype); - policies.add(tmp); - } - } - m.put("p", policies); + m.put("p", getPolicyBySection(model,"p")); + m.put("g", getPolicyBySection(model,"g")); return new Gson().toJson(m); } + private static List> getPolicyBySection(Model model, String section) { + List> policies = new ArrayList<>(); + for (String ptype : model.model.get(section).keySet()) { + List> policy = model.getPolicy(section, ptype); + for (List p : policy) { + List tmp = new ArrayList<>(p); + tmp.add(0, ptype); + policies.add(tmp); + } + } + return policies; + } } diff --git a/src/test/java/org/casbin/jcasbin/main/FrontendUnitTest.java b/src/test/java/org/casbin/jcasbin/main/FrontendUnitTest.java index 64fa70b..904a5cf 100644 --- a/src/test/java/org/casbin/jcasbin/main/FrontendUnitTest.java +++ b/src/test/java/org/casbin/jcasbin/main/FrontendUnitTest.java @@ -22,6 +22,7 @@ import java.nio.file.Paths; import java.util.HashMap; import java.util.List; +import java.util.regex.Pattern; import static org.junit.Assert.assertEquals; @@ -35,6 +36,7 @@ public void testCasbinJsGetPermissionForUser() throws IOException { assertEquals(received.get("m"), expectedModelStr); String expectedPolicyStr = new String(Files.readAllBytes(Paths.get("examples/rbac_with_hierarchy_policy.csv"))); + expectedPolicyStr = Pattern.compile("\n+").matcher(expectedPolicyStr).replaceAll("\n"); String[] expectedPolicyItem = expectedPolicyStr.split(",|\n"); int i = 0; for (List sArr : (List>) received.get("p")) { @@ -43,5 +45,11 @@ public void testCasbinJsGetPermissionForUser() throws IOException { i++; } } + for (List sArr : (List>) received.get("g")) { + for (String s : sArr) { + assertEquals(expectedPolicyItem[i].trim(), s.trim()); + i++; + } + } } }