Представляет разрешения, установленные для данной группы, в виде битовой маски. ИЛИ объединение битовых масок даст вам результирующий набор разрешений.
Обновление для @Alex:
Я написал этот ответ 3 года назад, но я думаю, что имел в виду следующее ...
Из вопроса
иерархия вложенных групп. Каждой группе может быть разрешен / запрещен доступ к
читать, писать, добавлять и удалять (либо явно для этой группы, либо
неявно одним из его родителей). Как будто это не было сложно
достаточно, система также позволяет пользователям быть членами нескольких
групп. - Это то, где я застрял. У меня все настроено, но
Я борюсь с реальной логикой для определения разрешений для
данный пользователь.
Назначить битовую маску, соответствующую полному набору разрешений группы (или роли) в системе:
например. 00
(использование двух битов упрощает!)
Первый бит присваивает Permission A
, а второй Permission B
.
Теперь, скажем, группа А предоставляет следующий набор разрешений: 01
.
... и скажем, что Группа B предоставляет следующий набор разрешений: 10
.
Чтобы получить результирующий набор разрешений для пользователя в произвольном наборе групп, вы можете выполнить логический OR
для битовых масок набора разрешений:
Permission set for Group A 01
Permission set for Group B 10 OR
----
Resultant permission set 11 (i.e. both permission A and B are conferred)
Я не знаю подробностей системы опрашивающего, но описанная здесь система может быть дополнена для достижения различных поведений группового состава с использованием разных логических операторов.