Объект “Роль” состоит из полей:
Так же в объекте содержится 4 коллекции
У объекта “Роль” есть признак “Административная”. Если оно проставлен, такой пользователь является администратором и имеет полный доступ ко всем объектам.
Для создания правила доступа необходимо в объекте “Роль” создать объект коллекции “Разрешение на тип”.
В программе к каждому объекту можно применить правило, самый простой способ это проставить признаки доступа
По умолчанию если пользователь не администратор, для каждого объекта признаки доступа имеют значение false. Т.е. если мы создадим новую роль(пустую) и добавим ее новому пользователю, у него не будет никаких прав, все будет пусто.
Зависимости от того как проставлены значения можно получить разные права доступа.
Пример: Если для объекта проставлены Navigate = true и Read = true. Пользователь сможет только просматривать объект и видеть в главном меню ссылки на него.
<note important>Если нужно создать базовую роль, чтобы у нее был доступ ко всем объектам, но только ReadOnly/WriteOnly/CRUDO(доступно все кроме навигации), необходимо создать роль в Updater и вызвать функцию BaseRole.SetTypePermissionsRecursively(typeof(object), SecurityOperations.ReadOnly, SecuritySystemModifier.Allow) Xaf создаст автоматически права доступа ко всем объектам с признаками Navigate = true и Read = true; </note>
В правах доступа существует возможность настраивать доступ к коллекциям объекта.
Пример: Есть объект клиент, у него 3 коллекции карты, визиты, движение по счету. Пользователь не должен иметь права доступа для редактирования объекта клиента, но он должен иметь право для редактирования коллекций карт, визитов, движения.
Для того чтобы реализовать пример необходимо:
В итоге пользователь с данной ролью сможет просматривать объект клиент и редактировать/создавать элементы коллекций
В правах доступа существует возможность настраивать доступ по определенному критерию.
Пример: Есть объект объект клиент. Пользователь может удалять объект клиент только если создал его он сам
Для того чтобы реализовать пример необходимо:
В результате получится что пользователь сможет удалять только клиентов которых он сам завел