Site Tools


Hotfix release available: 2026-07-14b "Mort". upgrade now! [57.2] (what's this?)
Hotfix release available: 2026-07-14a "Mort". upgrade now! [57.1] (what's this?)
New release available: 2026-07-14 "Mort". upgrade now! [57] (what's this?)
devpark:dev:setting_gui_depending_on_roles

Настройка интерфейса зависимости от прав доступа

Роль

Объект “Роль” состоит из полей:

  • Административная - Проставляет признак администратора программы
  • Разрешить Редактировать модель - позволяет пользователю редактировать модель
  • Имя - Наименование роли

Так же в объекте содержится 4 коллекции

  1. Пользователи - Пользователи которые используют сейчас данную роль
  2. Разрешение на тип - Правила на доступ к объекту
  3. Используемые роли - Роли от которых текущая роль наследует правила
  4. Используется в ролях - Указано в каких ролях это роль базовая

Администратор

У объекта “Роль” есть признак “Административная”. Если оно проставлен, такой пользователь является администратором и имеет полный доступ ко всем объектам.

Права доступа к объекту

Для создания правила доступа необходимо в объекте “Роль” создать объект коллекции “Разрешение на тип”.

В программе к каждому объекту можно применить правило, самый простой способ это проставить признаки доступа

  • Read - Позволяет только просматривать объект
  • Write - Позволяет редактировать объект
  • Create - Позволяет создавать объект
  • Delete - Позволяет удалять объект
  • Navigate - Позволяет видеть в главном меню ссылку на объект.

По умолчанию если пользователь не администратор, для каждого объекта признаки доступа имеют значение 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 коллекции карты, визиты, движение по счету. Пользователь не должен иметь права доступа для редактирования объекта клиента, но он должен иметь право для редактирования коллекций карт, визитов, движения.

Для того чтобы реализовать пример необходимо:

  1. Создать “Разрешение на тип” и указать тип “Клиент”.
  2. Указать признак Read = true и Navigate = true. - Т.е. пользователь сможет только просматривать объект Клиент.
  3. В “Разрешение на тип” создать объект коллекции “Member Permissions
  4. Ввести названии коллекций в поле “Поля”
  5. Проставить признаки Write = true

В итоге пользователь с данной ролью сможет просматривать объект клиент и редактировать/создавать элементы коллекций

Права доступа к объекту по критерию

В правах доступа существует возможность настраивать доступ по определенному критерию.

Пример: Есть объект объект клиент. Пользователь может удалять объект клиент только если создал его он сам

Для того чтобы реализовать пример необходимо:

  1. Создать “Разрешение на тип” и указать тип “Клиент”.
  2. Указать признак Read = true, Navigate = true, Create = true, Write = true. - Пользователь может все кроме удаления.
  3. В “Разрешение на тип” создать объект коллекции “Object Permissions
  4. В вести в строку “Критерий” значение “[CreateBy.OID] = [CurrentUser.OID]”
  5. Проставить признак Delete = true

В результате получится что пользователь сможет удалять только клиентов которых он сам завел

devpark/dev/setting_gui_depending_on_roles.txt · Last modified: by 127.0.0.1