myks92
@myks92
Нашёл решение — пометь вопрос ответом!

Yii2 как при использовании RBAC вывести пользователей только с нужной ролью?

Использую RBAC для разграничения прав доступа и ролей. Имеется таблица "user" , куда записываются все пользователи. И стандартная таблица RBAC "auth_assignment", где назначаются роли каждому user. В данном случае есть несколько ролей: admin, user, director, superadmin.

В некоторых таблицах GridView, при запросе из базы данных, хочу выводить из базы всех user у которого есть роль user. Как это можно осуществлять в запросах? Пока что я это вижу примерно так:

  1. Ищем всех user в таблице "auth_assignment" у которых есть роль user и получаем user_id всех user-ов
  2. Ищем всех user у которых id равно user_id из предыдущего пункта и отправляем это все в GridView


По-моему это всё как-то очень сложно. Есть ли более простые решения или напишите более оптимальные по использованию. Благодарю!
  • Вопрос задан
  • 344 просмотра
Решения вопроса 1
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
делаем join c таблицей auth_assignment и добавляем условие
$query = User::find()
    ->select('user.*')
    ->leftJoin('auth_assignment', '`auth_assignment`.`user_id` = `user`.`id`')
    ->andWhere(['auth_assignment.item_name'=>'superadmin'])

ну и скормить эту кверю датапровайдеру
ПС: писал из сонной головы, надо проверять. И наверное будет нюанс при нескольких ролях у 1 пользователя, но сам принцип думаю понятен
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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