I try to use group role.
config-main.php
$config['components']['authManager'] = [
'class' => 'yii\rbac\PhpManager',
'defaultRoles' => [0, 1, 2, 3],
];
data/rbac.php
<?php
use yii\rbac\Item;
return [
'items' => [
'createTopic' => ['type' => Item::TYPE_PERMISSION, 'description' => 'Добавление топика', 'ruleName' => NULL, 'data' => NULL],
'updateTopic' => ['type' => Item::TYPE_PERMISSION, 'description' => 'Редактирование топика', 'ruleName' => NULL, 'data' => NULL],
'deleteTopic' => ['type' => Item::TYPE_PERMISSION, 'description' => 'Удаление топика', 'ruleName' => NULL, 'data' => NULL],
0 => [
'type' => Item::TYPE_ROLE,
'description' => 'Пользователь',
'children' => [
'createTopic',
],
'ruleName' => 'userGroup',
'data' => NULL
],
1 => [
'type' => Item::TYPE_ROLE,
'description' => 'Редактор',
'children' => [
0,
'updateTopic',
],
'ruleName' => 'userGroup',
'data' => NULL
],
2 => [
'type' => Item::TYPE_ROLE,
'description' => 'Модератор',
'children' => [
1,
'deleteTopic',
],
'ruleName' => 'userGroup',
'data' => NULL
],
3 => [
'type' => Item::TYPE_ROLE,
'description' => 'Администратор',
'children' => [
2,
],
'ruleName' => 'userGroup',
'data' => NULL
],
],
'rules' => [
'userGroup' => 'O:31:"gamesdiscuss\\data\\UserGroupRule":3:{s:4:"name";s:9:"userGroup";s:9:"createdAt";N;s:9:"updatedAt";N;}',
],
];
data/UserGroupRule.php
namespace gamesdiscuss\data;
use Yii;
use yii\rbac\Rule;
class UserGroupRule extends Rule
{
public $name = 'userGroup';
public function execute($user, $item, $params)
{
if ( ! Yii::$app->user->isGuest) {
return Yii::$app->user->identity->role == $item->name;
}
return false;
}
}
user role id stored in Yii::$app->user->identity->role.
for example. my role = 0 (user)
echo Yii::$app->user->can(Yii::$app->user->identity->id, 'createTopic');
always return false
what i do wrong?