Вопрос:
При использовании функционала делегирования прав происходит непонятное распределение доступа.
Кейс:
Имеем пользователей системы №1, №2 и №3.
Для объекта Активности распределены права по записям:
В настройках пользователя права Пользователь №2 делегируем пользователю №1 и пользователю №3.
Как срабатывает делегирование сейчас:
Пользователи №1 и №3 получают права пользователя №2. При этом пользователь №2 так же получает права на записи пользователей №1 и №3.
В настройках прав доступа активности, созданной под пользователем №1 отображается следующее:
Благодаря тому, что пользователь №2 получает права на просмотр записей обоих других пользователей, то пользователь №1 так же получает право на просмотр записей пользователя №3 и наоборот.
В конечном счете, все задействованные пользователи получают доступ ко всем записям объекта.
Как использовать функционал делегирования прав таким образом, чтобы пользователь, делегирующий права не получал права доступа пользователя, которому он делегирует?
Ответ:
При делегировании прав Пользователь 3 и Пользователь 1 начинают неявно входить во все группы, в которые входит Пользователь 2. По сути это эквивалентно тому, что они оба бы вошли в эти группы в явном виде. Т.о. после делегирования:
- Пользователь 2 по прежнему входит только в Подразделение1
- Пользователь 3 входит уже не только в Подразделение2, но и в Подразделение1 (хотя это не отображается в списке его ролей)
- Пользователь 1 входит уже не только в Подразделение3, но и в Подразделение1 (хотя это не отображается в списке его ролей)
Т.о. в Подразделение1, пока активно описанное делигирование прав, входят все 3 пользователя.
Учитывая настройки раздачи прав на новые записи по умолчанию, при создании новой записи Пользователем 3, права на эту запись получают Подразделение1 и Подразделение2 (при создании записи пользователем из Подразделение1 получают доступ все пользователи Подразделения1, аналогично Подразделение2 -> Подразделение2).
Поскольку, как описано выше, Пользователь 1 входит в Подразделение1, он также имеет право на просмотр записей, созданных остальными участниками Подразделение1.