Skip to content

Commit 8c50f92

Browse files
authored
fix: use rtype to get request tokens in CoreEnforcer (casbin#355)
1 parent 154fa26 commit 8c50f92

File tree

1 file changed

+21
-23
lines changed

1 file changed

+21
-23
lines changed

src/main/java/org/casbin/jcasbin/main/CoreEnforcer.java

+21-23
Original file line numberDiff line numberDiff line change
@@ -451,7 +451,7 @@ public void buildRoleLinks() {
451451
*/
452452
private EnforceResult enforce(String matcher, Object... rvals) {
453453
if (!enabled) {
454-
return new EnforceResult(true, new ArrayList<>(Collections.singletonList("The enforcer is not enable, allow all request")));
454+
return new EnforceResult(true, new ArrayList<>(Collections.singletonList("The enforcer is not enabled, allow all requests")));
455455
}
456456

457457
boolean compileCached = true;
@@ -524,21 +524,11 @@ private EnforceResult enforce(String matcher, Object... rvals) {
524524

525525
for (int i = 0; i < policy.size(); i++) {
526526
List<String> pvals = policy.get(i);
527-
if (pTokens.length != pvals.size()) {
528-
throw new CasbinMatcherException("invalid request size: expected " + pTokens.length +
529-
", got " + pvals.size() + ", rvals: " + Arrays.toString(rvals));
530-
}
531-
532-
// Util.logPrint("Policy Rule: " + pvals);
533-
// Select the rule based on request size
534527
Map<String, Object> parameters = new HashMap<>(rvals.length + pTokens.length);
535-
getRTokens(parameters, rvals);
536-
for (int j = 0; j < pTokens.length; j++) {
537-
parameters.put(pTokens[j], pvals.get(j));
538-
}
528+
getPTokens(parameters, pType, pvals, pTokens);
529+
getRTokens(parameters, rType, rvals);
539530

540531
Object result = expression.execute(parameters);
541-
// Util.logPrint("Result: " + result);
542532

543533
if (result instanceof Boolean) {
544534
if (!((boolean) result)) {
@@ -600,7 +590,6 @@ private EnforceResult enforce(String matcher, Object... rvals) {
600590
}
601591

602592
Object result = expression.execute(parameters);
603-
// Util.logPrint("Result: " + result);
604593

605594
if (streamEffector != null) {
606595
if ((boolean) result) {
@@ -718,15 +707,24 @@ public boolean addNamedDomainMatchingFunc(String ptype, String name, BiPredicate
718707
return false;
719708
}
720709

721-
private void getRTokens(Map<String, Object> parameters, Object... rvals) {
722-
for (Assertion assertion : model.model.get("r").values()) {
723-
if (!(rvals.length == assertion.tokens.length)) {
724-
continue;
725-
}
726-
for (int j = 0; j < assertion.tokens.length; j++) {
727-
String token = assertion.tokens[j];
728-
parameters.put(token, rvals[j]);
729-
}
710+
private void getRTokens(Map<String, Object> parameters, String rType, Object... rvals) {
711+
String[] requestTokens = model.model.get("r").get(rType).tokens;
712+
if(requestTokens.length != rvals.length) {
713+
throw new CasbinMatcherException("invalid request size: expected " + requestTokens.length +
714+
", got " + rvals.length + ", rvals: " + Arrays.toString(rvals));
715+
}
716+
for(int i = 0; i < requestTokens.length; i++) {
717+
parameters.put(requestTokens[i], rvals[i]);
718+
}
719+
}
720+
721+
private void getPTokens(Map<String, Object> parameters, String pType, List<String> pvals, String[] pTokens) {
722+
if (pTokens.length != pvals.size()) {
723+
throw new CasbinMatcherException("invalid policy size: expected " + pTokens.length +
724+
", got " + pvals.size() + ", pvals: " + pvals);
725+
}
726+
for (int i = 0; i < pTokens.length; i++) {
727+
parameters.put(pTokens[i], pvals.get(i));
730728
}
731729
}
732730

0 commit comments

Comments
 (0)