SEVNTEC
@SEVNTEC
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]
  • Вопрос задан
  • 34 просмотра
Пригласить эксперта
Ответы на вопрос 1
slo_nik
@slo_nik
Добрый вечер.
А Вы случаем ничего не путаете?
AccessControl это одно, а RBAC другое.
Может правильней будет в контроллере, в действии проверить(например)
public function actionUpdate()
{
     if (\Yii::$app->user->can('createPost')) {
         // update post
    }
}
Ответ написан
Ваш ответ на вопрос

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

Войти через TM ID
Похожие вопросы
Max.Credit Санкт-Петербург
от 150 000 до 150 000 руб.
Willz Москва
от 150 000 руб.
Fmedia Санкт-Петербург
от 40 000 до 100 000 руб.
19 авг. 2018, в 18:43
2000 руб./за проект
19 авг. 2018, в 17:11
200000 руб./за проект
19 авг. 2018, в 12:12
40000 руб./в месяц