villiwalla
@villiwalla
HTML-верстка

Почему не срабатывает или как использовать правило для разрешения RBAC?

Есть правило для проверки может ли юзер редактировать, удалять и т.д. Сейчас получается то запись модератора может редактировать обычный пользователь у которого нету commentUpdate|Delete, а только commenOwnUpdate|Delete. Используя:
if(Yii::$app->user->can('commentUpdate', ['user_id' => Yii::$app->user->id])) {
 // Пользователь true
 // Модератор true
 // любой другой false
}


Сейчас в контроллере:
public function behaviors()
    {
        return [
            'access' => [
                'class' => AccessControl::className(),
                'rules' => [
                    [
                        'allow' => true,
                        'actions' => ['update', 'delete'],
                        'roles' => ['commentUpdate', 'commentDelete'],
                        'roleParams' => ['user_id' => Yii::$app->user->id]
                    ]

                ]
            ],
        ];
    }


Но обычный юзер все равно может исполнять методы.

UPD
'roleParams' => ['user_id' => $model->user_id] а не 'roleParams' => ['user_id' => Yii::$app->user->id]
  • Вопрос задан
  • 55 просмотров
Пригласить эксперта
Ответы на вопрос 1
slo_nik
@slo_nik Куратор тега Yii
Добрый вечер.
А Вы случаем ничего не путаете?
AccessControl это одно, а RBAC другое.
Может правильней будет в контроллере, в действии проверить(например)
public function actionUpdate()
{
     if (\Yii::$app->user->can('createPost')) {
         // update post
    }
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы