Страница 1 из 1

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

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

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

Добавлено: 2019.04.17, 20:22
samdark
Что такое вес роли?

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

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

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

Добавлено: 2019.04.17, 22:18
samdark
Нет, RBAC работает не так.

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

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

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

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

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

Добавлено: 2019.05.04, 05:44
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
}