6.4.1. Настройка ролей

Рекомендованный способ настройки ролей и разрешений:

  1. Создайте роль Default, отбирающую все права в системе. Проще всего это сделать, установив тип роли Denying или Strictly denying. Последний тип рекомендуется, если используется доступ к данным системы через REST API. См. также раздел Проверки доступа к данным для получения информации о том, когда проверяются разрешения.

    Включите флажок Default role, чтобы эта роль автоматически назначалась всем новым пользователям.

  2. Создайте набор ролей, дающих нужные права различным категориям пользователей. Можно предложить две стратегии создания таких ролей:

    • Крупнозернистые (coarse-grained) роли - каждая роль содержит набор разрешений для всего круга обязанностей пользователя в системе. Например Sales Manager, Accountant. В этом случае пользователям в дополнение к запрещающей Default роли необходимо назначить как правило только одну разрешающую роль.

    • Мелкозернистые (fine-grained) роли - каждая роль содержит небольшой набор разрешений для выполнения пользователем некоторой функции в системе. Например Task Creator, References Editor. В этом случае пользователям в дополнение к запрещающей Default роли необходимо назначить несколько разрешающих ролей в соответствии с кругом их обязанностей.

    Разумеется, ничто не мешает совмещать обе стратегии.

  3. Администратору системы можно просто не назначать никаких ролей вообще, тогда у него будут все права на все объекты системы. Пользователя с запрещающими ролями можно сделать администратором, добавив ему роль типа Super.

Доступ к функциональности администрирования

Ниже приведен краткий перечень разрешений, которые необходимо настроить для пользователя с Denying-ролью, чтобы предоставить ему доступ к функциональности из меню Администрирование. К примеру, если вы хотите открыть доступ только к функциональности Entity log, добавьте разрешения, перечисленные в одноименной секции ниже.

Рекомендуется всегда предоставлять доступ к сущности sys$FileDescriptor как минимум на чтение, так она широко используется в различных механизмах платформы: отправка писем, вложения, системные журналы и т.д.

Разрешения, описанные ниже, можно настроить в редакторе сущности Role на соответствующих вкладках: Entity, Screen и Specific.

Кроме того. доступ к системным сущностям по умолчанию можно сконфигурировать с помощью свойства приложения cuba.defaultPermissionValuesConfig.

Users

Сущность User может использоваться и как ссылочный атрибут в модели данных вашего приложения. Чтобы отображать пользователей в выпадающих списках и экранах выбора, достаточно дать разрешение на доступ к самой сущности sec$User.

В случае, если вам требуется создавать и редактировать сущность User из запрещающей роли, вам понадобятся следующие разрешения:

  • Entities: sec$User, sec$Group; (опционально) sec$Role, sec$UserRole, sec$UserSubstitution.

Без разрешения на чтение сущности sec$UserSubstitution не будет работать работы механизм user substitution.

  • Screens: элемент меню Users, sec$User.edit, sec$Group.lookup; (опционально) sec$Group.edit, sec$Role.edit, sec$Role.lookup, sec$User.changePassword, sec$User.copySettings, sec$User.newPasswords, sec$User.resetPasswords, sec$UserSubstitution.edit.

Access Groups

Создание и управление группами доступа и ограничениями безопасности.

  • Entities: sec$Group, sec$Constraint, sec$SessionAttribute, sec$LocalizedConstraintMessage.

  • Screens: элемент меню Access Groups, sec$Group.lookup, sec$Group.edit, sec$Constraint.edit, sec$SessionAttribute.edit, sec$LocalizedConstraintMessage.edit.

Dynamic Attributes

Доступ к дополнительным неперсистентным атрибутам сущности.

  • Entities: sys$Category, sys$CategoryAttribute, а также требуемые сущности из вашей модели данных.

  • Screens: элемент меню Dynamic Attributes, sys$Category.edit, sys$CategoryAttribute.edit, dynamicAttributesConditionEditor, dynamicAttributesConditionFrame.

User Sessions

Просмотр информации о пользовательских сессиях.

  • Entities: sec$User, sec$UserSessionEntity.

  • Screens: элемент меню User Sessions, sessionMessageWindow.

Locks

Настройка пессимистичной блокировки сущностей.

  • Entities: sys$LockInfo, sys$LockDescriptor, а также требуемые сущности из вашей модели данных.

  • Screens: элемент меню Locks, sys$LockDescriptor.edit.

External Files
  • Entities: sys$FileDescriptor.

  • Screens: элемент меню External Files; (опционально) sys$FileDescriptor.edit.

Scheduled Tasks
  • Entities: sys$ScheduledTask, sys$ScheduledExecution.

  • Screens: элемент меню Scheduled Tasks, sys$ScheduledExecution.browse, sys$ScheduledTask.edit.

Entity Inspector

Работа с любыми объектами приложения из динамически создаваемых экранов при помощи entity inspector.

  • Entities: требуемые сущности из вашей модели данных.

  • Screens: элемент меню Entity Inspector, entityInspector.edit, а также требуемые сущности из вашей модели данных.

Entity Log

Отслеживание изменений сущностей на уровне entity listeners.

  • Entities: sec$EntityLog, sec$User, sec$EntityLogAttr, sec$LoggedAttribute, sec$LoggedEntity, а также требуемые сущности из вашей модели данных.

  • Screens: элемент меню Entity Log.

User Session Log

Просмотр исторических данных о входе и выходе пользователей из системы, или user sessions.

  • Entities: sec$SessionLogEntry.

  • Screens: элемент меню User Session Log.

Email History

Просмотр сообщений электронной почты, отправленных из приложения.

  • Entities: sys$SendingMessage, sys$SendingAttachment, sys$FileDescriptor (для вложений).

  • Screens: элемент меню Email History, sys$SendingMessage.attachments.

Server Log

Просмотр и скачивание журналов приложения.

  • Entities: sys$FileDescriptor.

  • Screens: элемент меню Server Log, serverLogDownloadOptionsDialog.

  • Specific: Download log files.

Reports

Запуск отчётов, см. дополнение Генератор Отчётов.

  • Entities: report$Report, report$ReportInputParameter, report$ReportGroup.

  • Screens: report$inputParameters, commonLookup, report$Report.run, report$showChart (если содержит шаблон с типом вывода Chart).