Casbin Forum runs on Casnode, the open-source Discourse-style forum. Try the Casnode demo →
Casbin Forum

Hi, guys.
I'm new to casbin.
I have the following model.conf:

[request_definition]
r = sub, act, obj

[policy_definition]
p = sub, act, obj

[role_definition]
g = _, _

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

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

And the following policy.csv:

p, alice, reader, data1
p, bob, owner, data2

g, reader, read
g, owner, write
g, owner, read

I can understand why an enforcer request with alice, read, data1 evaluates to True but I do not understand why alice, reader, data1 also evaluates to True (please note the r.act is reader, with an r at the end).
Btw, I tried the online editor and the AI explanations, but it's still not clear to me. 🤔
I'm using pycasbin v1.37.0.