casbin / jcasbin

An authorization library that supports access control models like ACL, RBAC, ABAC in Java

Home Page:https://casbin.org

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

addGroupingPolicy API interface bug

mynameisny opened this issue · comments

When using this interface enforcer. addGroupingPolicy ("member", "group") to add user to an group, occured java.lang.NullPointerException:

dependencies pom

<dependency>
    <groupId>org.casbin</groupId>
    <artifactId>jcasbin</artifactId>
    <version>1.31.1</version>
</dependency>

<dependency>
    <groupId>org.casbin</groupId>
    <artifactId>jdbc-adapter</artifactId>
    <version>2.3.3</version>
</dependency>

model.conf

[request_definition]
r = sub, obj, act

[policy_definition]
p = sub, obj, act

[policy_effect]
e = some(where (p.eft == allow))

[matchers]
m = g(r.sub, p.sub) && r.obj == p.obj && r.act == p.act

Application

JDBCAdapter adapter = new JDBCAdapter(driver, url, username, password);
String modelPath = "src/main/resources/cabin/model.conf";

Enforcer enforcer = new Enforcer(modelPath, adapter);

enforcer.addPolicy("admin", "/books", "READ");
boolean policy = enforcer.addGroupingPolicy("tony", "admin");  // Exception in thread "main" java.lang.NullPointerException
commented

Verified, I will fix it.

commented

I took a look and found that this is not a bug, acutrally addGroupingPolicy() is a role inheritance, so in model.conf should include a [role_definition] just look like follows.

[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

Closed as resolved

Thank you very much! @hsluoyz