Как правильно написать rule для RBAC?

180
02 января 2019, 07:40

yii2-advanced, использую RBAC, необходимо настроить доступ групп пользователей к редактированию групп продуктов У аккаунта каждого пользователя есть поле brand_id; такое же поле есть и у продуктов.

Нужно было сделать проверку этих полей. Сделал максимально просто и тупо.

Контроллер:

    if (Yii::$app->user->can('updateFabricatorImages', ['brand_id' => $model->brand_id])) {
        //код редактирования
    }

Rule:

public function execute($user, $item, $params)
{
    if (Yii::$app->user->can('moderator')) {
        return true;
    }
    $model = Users::findOne(Yii::$app->user->id);
    return isset($params['brand_id']) ? $model->brand_id == $params['brand_id'] : false;
}

Наверное на этом можно и остановиться, но мне интересно, как правильно оформить правило, т.е. без лишнего запроса в базу? Или по-другому никак?

Answer 1

(ответ из комментария ) Запрос в базу не обязательно делать. У вас инфа о текущем пользователе лежит в Yii::$app->user->identity->brand_id (Как-то так)

READ ALSO
Диапазон символов в регулярном выражении

Диапазон символов в регулярном выражении

Какие символы включает регулярное выражение [а-яА-Я]+? Известно, что оно не включает символы ё и ъИ для того, чтобы охватить весь алфавит русского...

196
Мониторинг загрузки сервера на сайте

Мониторинг загрузки сервера на сайте

Как получить данные из файла /proc/stat средствами php и вывести их на сайт(админку), при этом чтобы соответствующий скрипт находился в каталоге...

190
Проблема с парсингом сайта

Проблема с парсингом сайта

Есть сайт, на нем есть input в котором в поле value генерится код с каждым обновлением страницыМне нужно получить этот код через парсер

141