Skip to content

Commit b3d64af

Browse files
committed
feat: add examples and add basic model-enforcer tests.
1 parent bd4e66c commit b3d64af

17 files changed

+752
-12
lines changed

casbin/effect/default_effector.cpp

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,27 +33,25 @@ DefaultEffector* DefaultEffector :: NewDefaultEffector(){
3333
bool DefaultEffector :: MergeEffects(string expr, vector<Effect> effects, vector<float> results) {
3434
bool result;
3535

36-
unsigned int number_of_effects = sizeof(effects) / sizeof(effects[0]);
37-
3836
if (!expr.compare("some(where (p_eft == allow))")) {
3937
result = false;
40-
for(unsigned int index = 0 ; index < number_of_effects ; index++){
38+
for(unsigned int index = 0 ; index < effects.size() ; index++){
4139
if (effects[index] == Effect::Allow) {
4240
result = true;
4341
break;
4442
}
4543
}
4644
} else if (!expr.compare("!some(where (p_eft == deny))")) {
4745
result = true;
48-
for(unsigned int index = 0 ; index < number_of_effects ; index++){
46+
for(unsigned int index = 0 ; index < effects.size(); index++){
4947
if (effects[index] == Effect::Deny) {
5048
result = false;
5149
break;
5250
}
5351
}
5452
} else if (!expr.compare("some(where (p_eft == allow)) && !some(where (p_eft == deny))")) {
5553
result = false;
56-
for(unsigned int index = 0 ; index < number_of_effects ; index++){
54+
for(unsigned int index = 0 ; index < effects.size(); index++){
5755
if (effects[index] == Effect::Allow) {
5856
result = true;
5957
} else if (effects[index] == Effect::Deny) {
@@ -63,7 +61,7 @@ bool DefaultEffector :: MergeEffects(string expr, vector<Effect> effects, vector
6361
}
6462
} else if (!expr.compare("priority(p_eft) || deny")) {
6563
result = false;
66-
for(unsigned int index = 0 ; index < number_of_effects ; index++){
64+
for(unsigned int index = 0 ; index < effects.size(); index++){
6765
if (effects[index] != Effect::Indeterminate) {
6866
if (effects[index] == Effect::Allow) {
6967
result = true;

casbin/model/model.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -91,10 +91,10 @@ bool Model :: AddDef(string sec, string key, string value) {
9191
ast->tokens = Split(ast->value, ",");
9292
for (int i = 0; i < ast->tokens.size() ; i++)
9393
ast->tokens[i] = key + "_" + Trim(ast->tokens[i]);
94-
} else if(sec == "e")
95-
ast->value = RemoveComments(EscapeAssertion(ast->value));
96-
else
94+
} else if(sec == "m")
9795
ast->value = RemoveComments(ast->value);
96+
else
97+
ast->value = RemoveComments(EscapeAssertion(ast->value));
9898

9999
if (m.find(sec) != m.end())
100100
m[sec] = AssertionMap();

casbin/persist/file_adapter/file_adapter.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,8 @@ FileAdapter* FileAdapter :: NewAdapter(string file_path) {
2020

2121
// LoadPolicy loads all policy rules from the storage.
2222
void FileAdapter :: LoadPolicy(Model* model) {
23-
if (this->file_path == "") {
23+
if (this->file_path == "")
2424
throw CasbinAdapterException("Invalid file path, file path cannot be empty");
25-
}
2625

2726
this->LoadPolicyFile(model, LoadPolicyLine);
2827
}

examples/abac_rule_model.conf

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
[request_definition]
2+
r = sub, obj, act
3+
4+
[policy_definition]
5+
p = sub_rule, obj, act
6+
7+
[policy_effect]
8+
e = some(where (p.eft == allow))
9+
10+
[matchers]
11+
m = eval(p.sub_rule) && r.obj == p.obj && r.act == p.act

examples/abac_rule_policy.csv

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
p, r.sub.Age > 18, /data1, read
2+
p, r.sub.Age < 60, /data2, write
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
[request_definition]
2+
r = sub,obj,act
3+
4+
[policy_definition]
5+
p = sub,obj,act
6+
7+
[policy_effect]
8+
e = some(where (p.eft == allow))
9+
10+
[matchers]
11+
m = r.sub == p.sub && r.obj == p.obj && r.act == p.act

examples/comment_model.conf

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
[request_definition]
2+
r = sub, obj, act ; Request definition
3+
4+
[policy_definition]
5+
p = sub, obj, act
6+
7+
[policy_effect]
8+
e = some(where (p.eft == allow)) # This is policy effect.
9+
10+
# Matchers
11+
[matchers]
12+
m = r.sub == p.sub && r.obj == p.obj && r.act == p.act

examples/glob_model.conf

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
[request_definition]
2+
r = sub, obj, act
3+
4+
[policy_definition]
5+
p = sub, obj, act
6+
7+
[policy_effect]
8+
e = some(where (p.eft == allow))
9+
10+
[matchers]
11+
m = r.sub == p.sub && globMatch(r.obj, p.obj) && r.act == p.act

examples/glob_policy.csv

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
p, u1, /foo/*, read
2+
p, u2, /foo*, read
3+
p, u3, /*/foo/*, read
4+
p, u4, *, read
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
[request_definition]
2+
r = sub, dom, obj, act
3+
4+
[policy_definition]
5+
p = sub, dom, obj, act
6+
7+
[role_definition]
8+
g = _, _, _
9+
10+
[policy_effect]
11+
e = some(where (p.eft == allow))
12+
13+
[matchers]
14+
m = r.sub == p.sub && g(r.obj, p.obj, r.dom) && r.dom == p.dom && r.act == p.act

0 commit comments

Comments
 (0)