php-casbin
php-casbin copied to clipboard
Cannot use multiple policy rule
Hello, I try to use multiple policies as mentioned in documentation and I got some exceptions.
Model:
[request_definition]
r = sub, obj, act
[policy_definition]
p = sub, obj, act
p2 = sub, act
[role_definition]
g = _, _
g2 = _, _
[policy_effect]
e = some(where (p.eft == allow))
[matchers]
m = g(r.sub, p.sub) && g2(r.obj, p.obj) && r.act == p.act
Policy:
p, alice, data1, read
p, bob, data2, write
p2, data_group_admin, write
g, alice, data_group_admin
g2, data1, data_group
g2, data2, data_group
PHP:
<?php
require_once './vendor/autoload.php';
use Casbin\Enforcer;
use Casbin\Model\Model;
use Casbin\Persist\Adapters\FileAdapter;
$model = Model::newModelFromFile('casbin/model.conf');
$adapter = new FileAdapter("casbin/policy.csv");
$e = new Enforcer($model, $adapter);
var_dump($e->enforce("alice", "write"));
Exception:
/Users/bastien/PhpstormProjects/testcasbin/vendor/casbin/casbin/src/CoreEnforcer.php:799:
array(2) {
[0] =>
string(5) "alice"
[1] =>
string(5) "write"
}
PHP Fatal error: Uncaught Casbin\Exceptions\CasbinException: invalid request size: expected 3, got 2 in /Users/bastien/PhpstormProjects/testcasbin/vendor/casbin/casbin/src/CoreEnforcer.php:618
Stack trace:
#0 /Users/bastien/PhpstormProjects/testcasbin/vendor/casbin/casbin/src/CoreEnforcer.php(801): Casbin\CoreEnforcer->enforcing('', Array, 'alice', 'write')
#1 /Users/bastien/PhpstormProjects/testcasbin/test.php(13): Casbin\CoreEnforcer->enforce('alice', 'write')
#2 {main}
thrown in /Users/bastien/PhpstormProjects/testcasbin/vendor/casbin/casbin/src/CoreEnforcer.php on line 618
Fatal error: Uncaught Casbin\Exceptions\CasbinException: invalid request size: expected 3, got 2 in /Users/bastien/PhpstormProjects/testcasbin/vendor/casbin/casbin/src/CoreEnforcer.php on line 618
Casbin\Exceptions\CasbinException: invalid request size: expected 3, got 2 in /Users/bastien/PhpstormProjects/testcasbin/vendor/casbin/casbin/src/CoreEnforcer.php on line 618
Call Stack:
0.0006 396368 1. {main}() /Users/bastien/PhpstormProjects/testcasbin/test.php:0
0.0094 1166224 2. Casbin\CoreEnforcer->enforce(...$rvals = variadic('alice', 'write')) /Users/bastien/PhpstormProjects/testcasbin/test.php:13
0.0094 1166664 3. Casbin\CoreEnforcer->enforcing($matcher = '', $explains = [], ...$rvals = variadic('alice', 'write')) /Users/bastien/PhpstormProjects/testcasbin/vendor/casbin/casbin/src/CoreEnforcer.php:801
@leeqvip
@Viously
Invalid request size: expected 3, got 2
: The number of parameters of enforce()
must be the same as the number of configuration parameters of model .