Дизайнер ролей
Studio предоставляет визуальные инструменты для редактирования параметров ресурсных ролей и ролей уровня строк во время разработки.
Дизайнер ресурсных ролей
Чтобы создать новую ресурсную роль, используйте меню в Окне инструментов Jmix.
![role open](_images/role-open.png)
В появившемся диалоговом окне введите имя роли и ее код.
![role create](_images/role-create.png)
Дизайнер ролей интегрирован с редактором кода, который доступен на вкладке Text. Вы можете редактировать исходный код напрямую или использовать для создания кода элементы управления дизайнера.
Вкладка Definition определяет основные атрибуты роли.
![role definition](_images/role-definition.png)
Код роли используется при назначении роли пользователям, поэтому его не следует изменять после того, как роль была назначена некоторым пользователям. |
На вкладке User Interface вы можете определить разрешения для элементов меню и экранов.
![role user interface](_images/role-user-interface.png)
Дерево слева отображает структуру главного меню, экранов, определенных проектом и экранов, унаследованных от фреймворка и дополнений. В группе All Screens отображаются все оставшиеся экраны приложений, недоступные напрямую через главное меню. Найти нужный экран можно с помощью поля поиска, расположенного над деревом.
Все пункты меню и экраны по умолчанию запрещены. Выбрав элемент слева и Allow в панели справа, вы добавите разрешение на открытие соответствующего пункта меню или экрана.
Используйте панель инструментов над деревом, чтобы развернуть или свернуть его узлы. Кнопка с шестеренкой переключает отображение экранов и пунктов меню, для которых не указаны разрешения.
Флажок Allow all screens полезен, если нужно предоставить доступ ко всем экранам или запретить доступ только к некоторым.
На вкладке Entities можете определить разрешения CRUD для сущностей и атрибутов сущностей.
![role entities](_images/role-entities.png)
В таблице панели слева отображаются сущности, определенные в проекте, а также унаследованные от фреймворка и дополнений. Список сущностей можно отфильтровать по имени с помощью поля поиска, расположенного над таблицей.
Панель инструментов над сущностями содержит следующие действия:
-
Current project only – включает отображение унаследованных сущностей.
-
Assigned only – включает отображение сущностей, не имеющих разрешений.
По умолчанию все операции с сущностями запрещены. Используя флажки в таблице, вы можете разрешить определенные операции для выбранной сущности.
В таблице справа отображаются разрешения атрибутов для выбранной сущности. Все атрибуты сущности по умолчанию запрещены для просмотра и изменения. Установив флажки View и Modify, вы можете определить необходимый уровень доступа для выбранного атрибута.
Символ подстановки [*] в таблице атрибутов позволяет пометить все атрибуты как доступные для просмотра (View) или изменения (Modify), включая те атрибуты, которые будут добавлены к выбранной сущности в будущем.
Флажок Allow all в таблице сущностей разрешает все операции CRUD и позволяет изменять (Modify) все атрибуты, делая выбранную сущность полностью доступной для текущей роли.
На вкладке Specific вы можете определить определенные разрешения.
![role specific](_images/role-specific.png)
Фреймворк использует определенные разрешения для ограничения доступа к различным механизмам. В дереве можно увидеть разрешения, унаследованные от фреймворка и дополнений.
Чтобы добавить разрешение, используйте кнопку "плюс" на панели инструментов над деревом. В поле Resource нужно указать имя политики, определенной в вашем проекте. Узнайте, как создать специальную политику, в разделе Специальная политика.
Все специальные политики запрещены по умолчанию. Выберите политику в дереве и разрешите доступ на панели справа.
Мастер ролей уровня строк
Для создания новой роли уровня строк нажмите New → Row-level Role онке инструментов Jmix.
![row level role open](_images/row-level-role-open.png)
Введите параметры роли в появившемся диалоге.
![row level role create](_images/row-level-role-create.png)
Код роли используется при назначении роли пользователям, поэтому его не следует изменять после того, как роль была назначена некоторым пользователям. |
Studio создаст и откроет аннотированный интерфейс роли. Чтобы создать JPQL-политику, нажмите Add Policy → JPQL Policy в верхней панели действий:
![add policy button](_images/add-policy-button.png)
Введите параметры политики в диалоге Add JPQL Policy:
![add jpql policy](_images/add-jpql-policy.png)
Нажмите OK. Метод, определяющий политику, будет добавлен в интерфейс роли.
Аналогично, чтобы создать предикатную политику, нажмите Add Policy → Predicate Policy в верхней панели действий. В диалоге Add Predicate Policy укажите сущность и выберите операции, для которых должна действовать политика:
![add predicate policy](_images/add-predicate-policy.png)