Я пытаюсь настроить rbac с phpmanager в моем проекте, используя версию приложения Yii2. Но \ Yii :: $ app-> user-> can не возвращает ожидаемого.RBAC in YII2: user-> can() в PHPManager
Я написал RbacController и выполнен успешно yii rbac/init
Это обновленные общие/компоненты/items.php как показано
<?php
return [
'user' => [ 'type' => 1, 'children' => [ 'createX', ], ],
'createX' => [ 'type' => 2, 'description' => 'create a X',],
'admin' => [ 'type' => 1, 'children' => [ 'updateX', ], ],
'updateX => [ 'type' => 2, 'description' => 'update a X', ],
];
В SignupForm :: регистрация, я добавил его:
$auth = Yii::$app->authManager;
$roleObj = $auth->getRole('user'); // this role is defined by the RBAC Controller's init action
$auth->assign($roleObj, $user->getId());
assignments.php
return [ 2 => [ 'user', ], ];
Я думаю, что 2 соответствует идентификатору пользователя.
rules.php
return [];
общий/main.php
...
'components' => [
...
'authManager' => [
'class' => 'yii\rbac\PhpManager',
'defaultRoles' => ['user','admin'],
'itemFile' => '@common/components/rbac/items.php',
'assignmentFile' => '@common/components/rbac/assignments.php',
'ruleFile' => '@common/components/rbac/rules.php'
],
],
...
Когда я получил эту роль разрешения, она печатает:
Array ([Createx] => юй \ RBAC \ Permission Object ([type] => 2 [name] => createX [description] => создать X [ruleName] => [data] => [createdAt] => 1438601819 [updatedAt] => 1438601819))
Так что я ожидал, что пользователь не имеет обновления разрешения, но в методе XController :: обновлении
echo \Yii::$app->user->can('updateX');
// returns 1, just the same than \Yii::$app->user->can('createX') returning
Пожалуйста некоторая помощь