Skip to content

Commit 183c8d7

Browse files
committed
feat: fix the addPolicy bug
1 parent 8dd4940 commit 183c8d7

File tree

1 file changed

+16
-3
lines changed

1 file changed

+16
-3
lines changed

src/main/java/org/casbin/jcasbin/model/Policy.java

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@
2222
import java.util.HashMap;
2323
import java.util.List;
2424
import java.util.Map;
25+
import java.util.Arrays;
26+
27+
import static org.casbin.jcasbin.util.Util.splitCommaDelimited;
2528

2629
/**
2730
* Policy represents the whole access control policy user defined.
@@ -187,6 +190,16 @@ public boolean addPolicy(String sec, String ptype, List<String> rule) {
187190
List<List<String>> policy = assertion.policy;
188191
int priorityIndex = assertion.priorityIndex;
189192

193+
String line = ptype + "," + String.join(",", rule);
194+
if ("".equals(line)) {
195+
return false;
196+
}
197+
if (line.charAt(0) == '#') {
198+
return false;
199+
}
200+
String[] tokens = splitCommaDelimited(line);
201+
List<String> linePolicy = Arrays.asList(Arrays.copyOfRange(tokens, 1, tokens.length));
202+
190203
// ensure the policies is ordered by priority value
191204
if ("p".equals(sec) && priorityIndex >= 0) {
192205
int value = Integer.parseInt(rule.get(priorityIndex));
@@ -200,13 +213,13 @@ public boolean addPolicy(String sec, String ptype, List<String> rule) {
200213
right = mid;
201214
}
202215
}
203-
policy.add(left, rule);
216+
policy.add(left, linePolicy);
204217
for (int i = left; i < assertion.policy.size(); ++i) {
205218
assertion.policyIndex.put(assertion.policy.get(i).toString(), i);
206219
}
207220
} else {
208-
policy.add(rule);
209-
assertion.policyIndex.put(rule.toString(), policy.size() - 1);
221+
policy.add(linePolicy);
222+
assertion.policyIndex.put(linePolicy.toString(), policy.size() - 1);
210223
}
211224

212225
return true;

0 commit comments

Comments
 (0)