diff --git a/examples/keymatch5_model.conf b/examples/keymatch5_model.conf new file mode 100644 index 0000000..cec28e6 --- /dev/null +++ b/examples/keymatch5_model.conf @@ -0,0 +1,11 @@ +[request_definition] +r = sub, obj, act + +[policy_definition] +p = sub, obj, act + +[policy_effect] +e = some(where (p.eft == allow)) + +[matchers] +m = r.sub == p.sub && keyMatch5(r.obj, p.obj) && regexMatch(r.act, p.act) \ No newline at end of file diff --git a/examples/keymatch5_policy.csv b/examples/keymatch5_policy.csv new file mode 100644 index 0000000..456a4f0 --- /dev/null +++ b/examples/keymatch5_policy.csv @@ -0,0 +1,2 @@ +p, alice, /alice_data/{resource}/.*, GET +p, alice, /alice_data2/{id}/using/{resId}/.*, GET \ No newline at end of file diff --git a/pom.xml b/pom.xml index efb4dde..aaeb6c6 100644 --- a/pom.xml +++ b/pom.xml @@ -16,7 +16,7 @@ org.casbin jcasbin - 1.55.0 + 1.79.0 diff --git a/src/test/java/org/casbin/ClientTest.java b/src/test/java/org/casbin/ClientTest.java index 11803a5..751b027 100644 --- a/src/test/java/org/casbin/ClientTest.java +++ b/src/test/java/org/casbin/ClientTest.java @@ -324,4 +324,10 @@ public void testABACRule() { assertEquals(Client.run(new String[]{"enforce", "-m", "examples/abac_rule_model.conf", "-p", "examples/abac_rule_policy.csv", "{Age: 30}", "/data1", "read"}), "{\"allow\":true,\"explain\":null}"); assertEquals(Client.run(new String[]{"enforceEx", "-m", "examples/abac_rule_model.conf", "-p", "examples/abac_rule_policy.csv", "{Age: 30}", "/data1", "read"}), "{\"allow\":true,\"explain\":[\"r.sub.Age > 18 && r.sub.Age < 60\",\"/data1\",\"read\"]}"); } + + @Test + public void testKeyMatch5() { + assertEquals(Client.run(new String[]{"enforceEx", "-m", "examples/keymatch5_model.conf", "-p", "examples/keymatch5_policy.csv", "alice", "/alice_data/hello/123", "GET"}), "{\"allow\":true,\"explain\":[\"alice\",\"/alice_data/{resource}/.*\",\"GET\"]}"); + assertEquals(Client.run(new String[]{"enforceEx", "-m", "examples/keymatch5_model.conf", "-p", "examples/keymatch5_policy.csv", "alice", "/alice_data/hello/123", "POST"}), "{\"allow\":false,\"explain\":[]}"); + } }