2015-08-03 3 views
1

Я пытаюсь настроить 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 

Пожалуйста некоторая помощь

ответ

0

Первых элементы файл должен быть:

<?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', ], ], 
]; 

Вы можете проверить, соответствует ли код с помощью var_dump:

var_dump(\Yii::$app->authManager); 

 Смежные вопросы

  • Нет связанных вопросов^_^