Дизайнер ролей

Studio предоставляет визуальные инструменты для редактирования параметров ресурсных ролей и ролей уровня строк во время разработки.

Эта функциональность свободно доступна для использования в небольших проектах с количеством сущностей и ролей до 10. В более крупном проекте для нее требуется подписка Sprint, Enterprise или BPM.

Дизайнер ресурсных ролей

Чтобы создать новую ресурсную роль, используйте меню в Окне инструментов Jmix.

role open

В появившемся диалоговом окне введите имя роли и ее код.

role create

Вкладка Text

Дизайнер ролей интегрирован с редактором кода, который доступен на вкладке Text. Вы можете редактировать исходный код напрямую или использовать для создания кода элементы управления дизайнера.

Определение роли

На вкладке Definition можно:

  • Определить базовые атрибуты роли

  • Управлять иерархией ролей в рамках проекта

role definition

Код роли используется при назначении роли пользователям. Не изменяйте его после того, как роль была назначена пользователям.

Иерархия ролей

Просматривать и управлять иерархией ролей можно с помощью панелей Role Hierarchy.

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

Нижняя панель содержит панель инструментов с кнопками действий и список доступных ролей. Сюда входят роли, определенные в проекте, а также роли из связанных проектов и дополнений.

Добавить роль из списка доступных ролей в иерархию можно следующими способами:

  1. Двойной щелчок по роли в списке Available Roles.

  2. Использование действий контекстного меню (доступно по правому щелчку на роли в списке Available Roles).

  3. Нажатие кнопки со стрелкой вверх, расположенной в верхней части панели Available Roles.

Роль будет добавлена как родительская для текущей роли.

Чтобы удалить роль из иерархии, выберите ее и нажмите кнопку с минусом или используйте действия в контекстном меню.

Разрешения пользовательского интерфейса

На вкладке User Interface определяются разрешения для пунктов меню и экранов.

Разрешения отображаются для выбранной роли:

  • Текущая роль - редактируемые разрешения, определенные в самой роли

  • Родительская роль - доступное только для чтения отображение с возможностью навигации к соответствующему файлу роли

role user interface

Дерево справа отображает структуру главного меню, включая как определенные в проекте экраны, так и унаследованные экраны из фреймворка и дополнений. Группа All Views отображает все остальные экраны приложения, которые недоступны напрямую через главное меню. Найти нужный экран можно с помощью поля поиска, расположенного над деревом.

Все пункты меню и экраны по умолчанию запрещены. Выбрав элемент в списке и выбрав Allow на панели View Permissions, вы добавите разрешение на открытие соответствующего пункта меню или экрана.

Используйте панель инструментов над деревом, чтобы развернуть или свернуть его узлы. Кнопка с шестеренкой переключает отображение экранов и пунктов меню, для которых не указаны разрешения.

Флажок Allow all views полезен, если нужно предоставить доступ ко всем экранам или запретить доступ только к некоторым.

Разрешения для сущностей

На вкладке Entities определяются CRUD-разрешения для сущностей и атрибутов.

Разрешения отображаются для выбранной роли:

  • Текущая роль - редактируемые CRUD-разрешения

  • Родительская роль - доступное только для чтение отображение CRUD-разрешений и разрешений атрибутов

role entities

Таблица в правом верхнем углу отображает сущности, определенные в проекте, а также сущности, унаследованные от фреймворка и дополнений. Вы можете отфильтровать список сущностей по имени с помощью поля поиска над таблицей.

Панель инструментов над сущностями содержит следующие действия:

  • Current project only – включает отображение унаследованных сущностей.

  • Assigned only – включает отображение сущностей, не имеющих разрешений.

Все операции с сущностями по умолчанию запрещены. С помощью флажков в таблице вы можете разрешить определенные операции для выбранной сущности.

Таблица ниже отображает разрешения атрибутов для выбранной сущности. По умолчанию всем атрибутам сущности запрещен как просмотр, так и изменение. Установите флажки View и Modify, чтобы предоставить необходимый уровень доступа для каждого атрибута.

Символ подстановки [*] в таблице атрибутов позволяет пометить все атрибуты как доступные для просмотра (View) или изменения (Modify), включая те атрибуты, которые будут добавлены к выбранной сущности в будущем.

Флажок Allow all в таблице сущностей разрешает все операции CRUD и позволяет изменять (Modify) все атрибуты, делая выбранную сущность полностью доступной для текущей роли.

Специальные разрешения

На вкладке Specific определяются разрешения для различных механизмов фреймворка.

Разрешения отображаются для выбранной роли:

  • Текущая роль - редактируемые разрешения, определенные в самой роли

  • Родительская роль - доступное только для чтения отображение с возможностью навигации к соответствующему файлу роли

role specific

Фреймворк использует определенные разрешения для ограничения доступа к различным механизмам. В дереве можно увидеть разрешения, унаследованные от фреймворка и дополнений.

Чтобы добавить разрешение, используйте кнопку "плюс" на панели инструментов над деревом. В поле Resource нужно указать имя политики, определенной в вашем проекте. Узнайте, как создать специальную политику, в разделе Специальная политика.

Все специальные политики запрещены по умолчанию. Выберите политику в дереве и разрешите доступ на панели справа.

Мастер ролей уровня строк

Для создания новой роли уровня строк нажмите New → Row-level Role окне инструментов Jmix.

Введите параметры роли в появившемся диалоге.

row level role create

Код роли используется при назначении роли пользователям, поэтому его не следует изменять после того, как роль была назначена некоторым пользователям.

Studio создаст и откроет аннотированный интерфейс роли. Чтобы создать JPQL-политику, нажмите Add Policy → JPQL Policy в верхней панели действий:

add policy button

Введите параметры политики в диалоге Add JPQL Policy:

add jpql policy

Нажмите OK. Метод, определяющий политику, будет добавлен в интерфейс роли.

Аналогично, чтобы создать предикатную политику, нажмите Add Policy → Predicate Policy в верхней панели действий. В диалоге Add Predicate Policy укажите сущность и выберите операции, для которых должна действовать политика:

add predicate policy