Skip to content

Commit 49b01e1

Browse files
authored
fix: add enforce command (#15)
1 parent eee4fe9 commit 49b01e1

File tree

4 files changed

+26
-4
lines changed

4 files changed

+26
-4
lines changed

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,13 @@ mvn clean install
3333
- Check whether Alice has read permission on data1
3434

3535
```shell
36-
./casbin -m "examples/rbac_model.conf" -p "examples/rbac_policy.csv" -e "alice, data1, read"
36+
./casbin enforce -m "examples/rbac_model.conf" -p "examples/rbac_policy.csv" "alice" "data1" "read"
3737
```
38-
> Allow
38+
> Allowed
3939
```shell
40-
./casbin -m "[request_definition]|r = sub, obj, act|[policy_definition]|p = sub, obj, act|[role_definition]|g = _, _|[policy_effect]|e = some(where (p.eft == allow))|[matchers]|m = g(r.sub, p.sub) && r.obj == p.obj && r.act == p.act" -p "p, alice, data1, read|p, bob, data2, write|p, data2_admin, data2, read|p, data2_admin, data2, write|g, alice, data2_admin" -e "alice, data1, read"
40+
./casbin enforce -m "[request_definition]|r = sub, obj, act|[policy_definition]|p = sub, obj, act|[role_definition]|g = _, _|[policy_effect]|e = some(where (p.eft == allow))|[matchers]|m = g(r.sub, p.sub) && r.obj == p.obj && r.act == p.act" -p "p, alice, data1, read|p, bob, data2, write|p, data2_admin, data2, read|p, data2_admin, data2, write|g, alice, data2_admin" "alice" "data1" "read"
4141
```
42-
> Allow
42+
> Allowed
4343

4444
- Check whether Alice has write permission for data2. If so, display the effective policy.
4545

src/main/java/org/casbin/Client.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ public class Client {
2020
private static final String RBAC_WITH_DOMAINS_COMMAND = "rbac_with_domains";
2121
private static final String ROLEMANAGER_COMMAND = "role_manager";
2222
private static final String MANAGEMENT_COMMAND = "management";
23+
private static final String ENFORCE_COMMAND = "enforce";
2324

2425
private static final Map<String, AbstractCommand> COMMANDS = new HashMap<>();
2526

@@ -29,6 +30,7 @@ public class Client {
2930
COMMANDS.put(RBAC_WITH_DOMAINS_COMMAND, new RBACWithDomainsCommand());
3031
COMMANDS.put(ROLEMANAGER_COMMAND, new RoleManagerCommand());
3132
COMMANDS.put(MANAGEMENT_COMMAND, new ManagementCommand());
33+
COMMANDS.put(ENFORCE_COMMAND, new EnforceCommand());
3234
}
3335

3436
public static String run(String... args) {
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package org.casbin.command;
2+
3+
import org.casbin.NewEnforcer;
4+
5+
public class EnforceCommand extends AbstractCommand {
6+
@Override
7+
public String run(NewEnforcer enforcer, String... args) throws Exception {
8+
String subject = args[0];
9+
String object = args[1];
10+
String action = args[2];
11+
boolean res = enforcer.enforce(subject, object, action);
12+
System.out.println(res ? "Allowed" : "Denied");
13+
return String.valueOf(res);
14+
}
15+
}

src/test/java/org/casbin/ClientTest.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,4 +111,9 @@ public void testCustomFunction() throws ParseException {
111111

112112
}
113113

114+
@Test
115+
public void testEnforce() {
116+
assertEquals(Client.run(new String[]{"enforce","-m","examples/rbac_model.conf","-p","examples/rbac_policy.csv", "alice", "data1", "read"}), "true");
117+
}
118+
114119
}

0 commit comments

Comments
 (0)