Как в RBAC задать вес роли

Всё про контроль доступа пользователей: фильтры, RBAC, проверки
Ответить
Аватара пользователя
svil
Сообщения: 423
Зарегистрирован: 2018.02.12, 22:41

Как в RBAC задать вес роли

Сообщение svil » 2019.04.17, 20:21

Как с помощью basic RBAC создать веса роли: admin 100, manager 50, user 20 ?

Аватара пользователя
samdark
Администратор
Сообщения: 8961
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Как в RBAC задать вес роли

Сообщение samdark » 2019.04.17, 20:22

Что такое вес роли?

Аватара пользователя
svil
Сообщения: 423
Зарегистрирован: 2018.02.12, 22:41

Re: Как в RBAC задать вес роли

Сообщение svil » 2019.04.17, 20:29

У каждой роли есть свой вес, который задает иерархию ролей. Если роль пользователя имеет доступ в раздел “Список пользователей” (/users/user/manage), то такой роли не будут видны пользователи с весом роли >= текущего веса роли пользователя. Это означает, что и другим пользователям текущий пользователь не сможет назначить роль с весом >= своего.

Аватара пользователя
samdark
Администратор
Сообщения: 8961
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Как в RBAC задать вес роли

Сообщение samdark » 2019.04.17, 22:18

Нет, RBAC работает не так.

Аватара пользователя
svil
Сообщения: 423
Зарегистрирован: 2018.02.12, 22:41

Re: Как в RBAC задать вес роли

Сообщение svil » 2019.04.17, 23:57

Мне дали тестовое задание "доработка аутентификации ролями пользователей (администратор – вес 100, бухгалтер – вес 50, пользователь – вес 20)" Гуглю, не знаю, куда копать

Аватара пользователя
maleks
Сообщения: 1716
Зарегистрирован: 2012.12.26, 12:56

Re: Как в RBAC задать вес роли

Сообщение maleks » 2019.04.18, 06:59

Небольшое уточнение (не критическое) с тем что у пользователя может быть много ролей.
Плюс роли бывают вложены в роли, получается что он будет обладать обеими.
Но если последнее "упустить из виду", то вполне решаемо.
По сути нужен то специфический механизм назначения ролей пользователям.
Заведи в auth_item столбец под вес роли.
И сможешь запросами находить и свой максимальный вес. И какой max вес у других пользователей.

Аватара пользователя
leonenco
Сообщения: 81
Зарегистрирован: 2017.01.30, 22:42

Re: Как в RBAC задать вес роли

Сообщение leonenco » 2019.05.04, 05:44

maleks писал(а):
2019.04.18, 06:59
Небольшое уточнение (не критическое) с тем что у пользователя может быть много ролей.
Плюс роли бывают вложены в роли, получается что он будет обладать обеими.
Но если последнее "упустить из виду", то вполне решаемо.
По сути нужен то специфический механизм назначения ролей пользователям.
Заведи в auth_item столбец под вес роли.
И сможешь запросами находить и свой максимальный вес. И какой max вес у других пользователей.
Согласен, ток я бы создал в юзер таблице поле вес, и в моделе прописал константу на дефолт значение, а также константы на 100, 50, 20. Только Супер админ может назначать вес роли пользователя. А дальше тянуть из запроса

Код: Выделить всё

if(Yii::$app->user->identity->role == User::ROLE_USER && Yii::$app->user->identity->weight == User::WEIGHT_50){
	return true; //Can
}

Ответить