6.2.4. Разрешения
Разрешение определяет право пользователя на какой-либо объект или функциональность системы: экран, операцию над сущностью и так далее. Такие объекты, по отношению к разрешенниям, называются целями.
Разрешения даются пользователям путем назначения им ролей.
|
Пользователь не имеет права на объект, пока соответствующее разрешение не будет дано некоторой ролью. Поэтому пользователи без ролей не имеют никаких прав и не могут иметь доступа к системе через Generic UI и REST API. |
Существуют следующие типы разрешений, различаемые по целям:
- Разрешения на экраны системы (screen permissions)
-
Экран может быть либо разрешен, либо запрещен.
Права на экраны проверяются при построении главного меню системы и при создании экранов методом
create()интерфейсаScreens. Для проверки права на экран в прикладном коде используйте методisScreenPermitted()интерфейса Security. - Разрешения на операцию c сущностью (entity operation permissions)
-
Для каждой сущности можно разрешить операции Create, Read, Update, Delete.
См. также раздел Проверки доступа к данным для получения информации о том, как разрешения на операции c сущностью используются различными механизмами фреймворка. Для проверки права на операцию c сущностью в прикладном коде используйте метод
isEntityOpPermitted()интерфейса Security. - Разрешения на атрибуты сущности (entity attribute permissions)
-
Каждый атрибут каждой сущности может быть разрешен для просмотра или для модификации.
См. также раздел Проверки доступа к данным для получения информации о том, как разрешения на атрибуты сущностей используются различными механизмами фреймворка. Для проверки права на атрибут сущности в прикладном коде используйте метод
isEntityAttrPermitted()интерфейса Security. - Специфические разрешения (specific permissions)
-
Разрешения на произвольную именованную функциональность. Набор специфических разрешений для проекта задается в конфигурационном файле permissions.xml.
Пример использования:
@Inject private Security security; public void calculateBalance() { if (!security.isSpecificPermitted("myapp.calculateBalance")) return; ... } - Разрешения на компоненты экранов (screen component permissions)
-
Разрешения на компоненты экранов позволяют скрывать или переводить в режим "только чтение" любые UI компоненты экрана, даже если они не связаны с сущностями модели данных. Такие разрешения применяются фреймворком после отсылки AfterInitEvent и до BeforeShowEvent.
Разрешения на компоненты экранов отличаются от всех остальных типов разрешений тем, что они только ограничивают права на свои цели. Пока целевой компонент вместе с разрешением "скрыть" или "только чтение" не задан, данный компонент полностью доступен пользователю.
Целевой компонент указывается путем к нему в экране в соответствии со следующими правилами:
-
Если компонент принадлежит экрану, указывается просто идентификатор компонента
id. -
Если компонент принадлежит фрейму, вложенному в экран, то сначала указывается идентификатор фрейма, а затем через точку идентификатор компонента внутри фрейма.
-
Если необходимо установить разрешение для вкладки TabSheet или поля Form, то сначала указывается идентификатор компонента, а затем в квадратных скобках идентификатор соответственно вкладки или поля.
-
Чтобы установить разрешение на действие, необходимо указать идентификатор компонента, содержащего действие, а затем идентификатор действия в угловых скобках. Например:
customersTable<changeGrade>.
-