Настроил rbac по инструкции http://krivochenko.ru/blog/post/rbac-in-yii2-users
проверка $item->name=='articleRead' в IsAuthorRule срабатывает и даёт true, но не открывает доступ. Как быть?
Код: Выделить всё
class IsAuthorRule extends Rule
{
public $name = 'isAuthorRule';
public function execute($user, $item, $params)
{
if($item->name=='articleRead'){
// echo 22222;
return true;
}
if (!isset($params['article'])) {
//return false;
return true;
}
return ($params['article']->author_id == $user);
}
}
Код: Выделить всё
class ReshenieController extends Controller
{
private $_model = false;
/**
* @inheritdoc
*/
public function behaviors()
{
return [
'access' => [
'class' => AccessControl::className(),
'only' => ['index', 'create', 'view', 'update', 'delete'],
'rules' => [
[
'allow' => true,
'actions' => ['index'],
'roles' => ['articleRead'],
],
[
'allow' => true,
'actions' => ['create'],
'roles' => ['articleCreate'],
],
[
'allow' => true,
'actions' => ['view'],
'roles' => ['articleRead'],
],
[
'allow' => true,
'actions' => ['update'],
'matchCallback' => function ($rule, $action) {
return Yii::$app->user->can('articleUpdate', ['article' => $this->findModel(Yii::$app->request->get('id'))]);
}
],
[
'allow' => true,
'actions' => ['delete'],
'matchCallback' => function ($rule, $action) {
return Yii::$app->user->can('articleDelete', ['article' => $this->findModel(Yii::$app->request->get('id'))]);
}
],
],
],
];