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

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

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

Сообщение svil »

Как с помощью basic RBAC создать веса роли: admin 100, manager 50, user 20 ?
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

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

Сообщение samdark »

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

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

Сообщение svil »

У каждой роли есть свой вес, который задает иерархию ролей. Если роль пользователя имеет доступ в раздел “Список пользователей” (/users/user/manage), то такой роли не будут видны пользователи с весом роли >= текущего веса роли пользователя. Это означает, что и другим пользователям текущий пользователь не сможет назначить роль с весом >= своего.
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

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

Сообщение samdark »

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

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

Сообщение svil »

Мне дали тестовое задание "доработка аутентификации ролями пользователей (администратор – вес 100, бухгалтер – вес 50, пользователь – вес 20)" Гуглю, не знаю, куда копать
Аватара пользователя
maleks
Сообщения: 1985
Зарегистрирован: 2012.12.26, 12:56

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

Сообщение maleks »

Небольшое уточнение (не критическое) с тем что у пользователя может быть много ролей.
Плюс роли бывают вложены в роли, получается что он будет обладать обеими.
Но если последнее "упустить из виду", то вполне решаемо.
По сути нужен то специфический механизм назначения ролей пользователям.
Заведи в auth_item столбец под вес роли.
И сможешь запросами находить и свой максимальный вес. И какой max вес у других пользователей.
Yii2 universal module sceleton - for basic and advanced templates
Аватара пользователя
leonenco
Сообщения: 155
Зарегистрирован: 2017.01.30, 22:42

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

Сообщение leonenco »

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
}
Ответить