# Справочник ролей

Защита информации в многомодульном приложении на платформе JaBricks реализуется интегрированным в интерфейс ролевым механизмом базы данных (БД). Интеграция ролевого механизма обусловлена связями модулей с пунктами меню и с серверными объектами БД. Справочник ролей позволяет определить права доступа пользователей как на уровне интерфейса модулей системы, так и на уровне базы данных (БД) к связанным с модулями объектам — таблицам и хранимым процедурам. В приложение используется два типа ролей : роль с гостевым доступом guest и роль с полным доступом granted.

Примечание : Модуль функционирует с сервером БД PostgreSQL.

Назначение пользователю одной или нескольких ролей позволяет получать доступ к определенного рода информации. При гостевом доступе пользователь может только просматривать связанную с модулем информацию. При полном доступе пользователь может вносить изменения : добавлять, обновлять и удалять записи (информацию). Если пользователю доступ к модулю (пункту меню) закрыт (forbidden), то он не сможет не только вносить изменения, но и просмотр (чтение) информации будет блокирован. При определенном значении программной настройки параметра menu_forbidden_lock пользователю может быть блокирован доступ к пункту меню.

Внешний вид справочника ролей, представленный на скриншоте, включает три панели.

Список ролей
В левой панели отображается список ролей. Во второй колонке таблицы отображается доступ роли к объектам БД. В нижней части панели отображается комментарий к выделенной роли.

Список связанных с ролью модулей
В центральной части располагается список связанных с ролью модулей (пунктов меню). В отдельных случаях модуль может быть не связан с пунктом меню, как, например, форма изменения пароля. В этом случае в таблице для таких модулей первые две колонки будут пустыми.

Список связанных с ролью объектов БД
В правой панели по группам отображаются объекты базы данных (БД), связанных с ролью. Объекты БД, к которым открыт полный доступ (granted) представлены в Таблицах тразакций. Список объектов БД, к которым открыт гостевой доступ (guest) представлен в Таблицах чтения. В нижней части представлены хранимые процедуры и функции, к которым у роли имеется доступ на исполнение (exec).

Описания объектов БД по группам (назначению)

Тип объекта | Описание
--- | ---
Таблицы транзакций | Объекты БД типа Table и View используются для управления информацией системы (чтение, добавление, обновление и удаление записей).
Таблицы чтения | Объекты БД типа Table и View используются только для чтения; как правило, для получения справочной информации.
Процедуры и функции | Методы БД типа Procedure и Function могут быть использованы как для чтения, так и управления информацией.

Чтобы создать роль в системе необходимо определить наименование роли, включить в роль список модулей и нажать кнопку «Сохранить». Список объектов базы данных, связанных с пунктами меню (модулями) сформируется автоматически. Определение наименования роли и прав доступа формируются в отдельном окне. Кнопкой можно просмотреть кто и когда создал роль и кто внес последние изменения.

Примечание :
1. Список ролей формируется при инсталляции справочных данных. Администратор может создать дополнительные роли, либо внести изменения в существующие.
2. В списке представлены две роли rl_login_guest и rl_login_granted, которые должны быть назначены каждому пользователю. Роль rl_login_guest открывает доступ к объектам БД, которые необходимы для входа в систему. При первом входе в систему пользователь с новой учетной записью должен обновить пароль; после успешной авторизации вызывается форма изменения пароля. Роль rl_login_granted позволяет обновить дату изменения пароля пользователя.

## Определение наименования роли

Окно формирования роли, интерфейс которого представлен на следующем скриншоте, позволяет определить новую роль или внести изменения в существующую. Чтобы открыть окно для создания новой роли необходимо нажать на кнопку в верхней части панели. В интерфейсе можно определить наименование роли, права доступа (guest, granted) и комментарий. Для редактирования существующей роли необходимо использовать двойное нажатие клавишей мыши на записи в таблице.

Примечание
1. При редактировании роли все изменения до сохранения касаются только интерфейсной части. Измененная роль до момента сохранения подсвечивается красным цветом.
2. В наименовании роли допускаются только символы ASCII, цифровые символы и символ подчеркивания. Роль не может начинаться с символов 'SYS'. Также наименования роли 'public', 'postgres', 'derby' недопустимо.

## Выбор модулей

Окно выбора модулей, интерфейс которого представлен на скриншоте, отображает в табличном виде список модулей и связанных с ними пунктов меню системы. В колонке «Администратор» устанавливается флаг для модулей, требующих права доступа владельца БД (root). В нижней левой части располагается фильтр, позволяющий быстро найти нужный модуль по заголовку раздела, наименованию пункта меню или модуля. В верхней части справа располагается фильтр в виде радио-кнопок для быстрого выделения только выбранных модулей, либо невыбранных.

Сортировка списка модулей построена таким образом, чтобы сначала представить выбранные модули, если не установлен флаг «Невыбранные». Текстовый компонент нижнего фильтра используется как шаблон, для быстрого поиска; можно вводить часть текста, входящего в заголовок/наименование. После определения списка модулей необходимо нажать на кнопку «Выбрать».

Примечание : Список связанных с модулями объектов БД формируется автоматически и отображается в правой панели по группам согласно определенному праву доступа роли. Связи модулей с объектами БД определяются в справочнике Серверных объектов модулей.

## Окно просмотра привилегий объектов

Окно просмотра привелегий объектов БД, связанных с ролью, открывается нажатием на кнопку . В табличном виде представлен список объектов и определены DML-операторы (Data Manipulation Language), которые пользователь может выполнять непосредственно в БД. То есть, пользователь согласно роли получает такие же права прямого доступа к информации в БД, что и при использовании интерфейсных модулей.

## Прямой просмотр роли БД

Окно прямого просмотра роли БД открывается нажатием на кнопку . Информация по связанным с ролью объектам запрашивается непосредственно у сервера БД.