- Исходная задача
- Настройка модели данных «user_permissions»
- Дополнение «Модели А» информацией об иерархии регионов
- Настройка схемы доступа
- Настройка маппинга атрибутов доступа схемы и провайдера
- Настройка правил доступа к данным «Модели А»
- Результат применения настроенного правила доступа к данным «Модели А»
В п. Исходная задача – Результат применения настроенного правила доступа к данным «Модели А» приведен пример настройки правил атрибутного доступа для пользователей внутреннего провайдера «AW» с типом «Локальный (user_permissions)», иллюстрирующий изложенные выше принципы.
Необходимо ограничить доступ к данным по территориальной принадлежности. Есть источник и модель «Модель А», содержащая данные из источника, извлекаемые SQL-запросом. В самих данных есть столбец, содержащий названия региона России, к которому относятся значения в строке (Рисунок «Данные к которым будет предоставляться (ограничиваться) доступ, и их привязка к регионам»).
Рисунок 76. Данные, к которым будет предоставляться (ограничиваться) доступ и их привязка к регионам
Необходимо обеспечить доступ:
-
пользователям центрального аппарата – к данным по всем регионам;
-
пользователям регионов – к данным только своего собственного региона.
Чтобы выстроить такие разрешения, необходимо:
-
расширить данные исходной таблицы недостающей информацией об иерархии регионов;
-
обеспечить в информации о пользователях (в данных модели «user_permissions») сведения о принадлежности пользователя региону и ветке иерархии, содержащей данный регион.
Источником данных о пользователях и их территориальной привязке является Excel-файл. Данные сохранены в источнике в виде следующей структуры таблиц (листов) (Таблица «Структура источника данных»).
Таблица 3. Структура источника данных
Таблица (Лист) | Поле | Тип данных | Пример наполнения | Описание поля |
---|---|---|---|---|
Территориальная структура | ID_reg | Целое число | 2 | Идентификатор единицы территориальной структуры |
Территориальная структура | Название | Строка | Нижегородская область | Название единицы территориальной структуры |
Территориальная структура | Parent_ID_reg | Целое число | 1 | Идентификатор «родительской» единицы территориальной структуры |
Территориальная структура | Reg_path_num | Строка | 1;2; | «Путь» – последовательность идентификаторов единиц территориальной структуры, составляющих ветку от корневого до данного элемента |
Пользователи | login | Строка | Maslow | Логин (обеспечивает связку с системным справочником пользователей) |
Пользователи | ФИО | Строка | Маслов | ФИО (или иная дополнительная информация о пользователе) |
Пользователи | ID_reg | Целое число | 4 |
Таблица «Территориальная структура» содержит информацию об иерархической структуре регионов (Таблица «Информация таблицы «Территориальная структура»).
Таблица 4. Информация таблицы «Территориальная структура»
ID_reg | Название территории | Parent_ID_reg | Reg_path_num |
---|---|---|---|
1 | Российская Федерация | 1; | |
2 | Нижегородская область | 1 | 1;2; |
3 | Республика Татарстан | 1 | 1;3; |
4 | Удмуртская Республика | 1 | 1;4; |
5 | Ярославская область | 1 | 1;5; |
Иерархия регионов сохранена в поле REG_PATH_NUM, содержащем последовательность ID_REG для всей ветки территориальной структуры от корневого ID_REG = 1 (Российская Федерация) до ID_REG данного региона. В качестве разделителя в данной строке используется символ «;». Данный разделитель также обязательно должен присутствовать в конце значения в REG_PATH_NUM (даже если это значение содержит только 1 элемент, например: «1;» для позиции «Российская Федерация»).
Таблица «Пользователи» содержит логины пользователей и привязки к регионам (Таблица «Данные таблицы «Пользователи»).
Таблица 5. Данные таблицы «Пользователи»
login | ФИО | ID_reg |
---|---|---|
Ivanov | Иванов | 1 |
Petrov | Петров | 2 |
Stepanova | Степанова | 3 |
Maslow | Маслов | 4 |
Znamenskii | Знаменский | 5 |
На основании этих данных администратором Системы создается следующая структура модели «user_permissions» (Рисунок «Структура модели «user_permissions» для примера»).
В основе – данные таблицы «Пользователи». Они дополнены данными таблицы «Территориальная структура» на основе связи по равенству поля ID_REG. В результате для каждого пользователя добавлено название его региона и значение REG_PATH_NUM.
Таблица «Территориальная структура» используется также для дополнения данных «Модели А» информацией об иерархии регионов (Рисунок «Структура «Модели А» с привязанной таблицей «Территориальная структура» и ограничением только регионами к которым привязаны пользователи»). Эту операцию может выполнить пользователь, создавший данную модель или имеющий права на ее редактирование. В примере добавлен тип связи таблиц «inner join». Это ограничивает состав строк в модели данных только теми регионами, к которым привязаны пользователи.
Рисунок 78. Структура «Модели А» с привязанной таблицей «Территориальная структура» и ограничением только регионами к которым привязаны пользователи
Администратор Системы или пользователь, наделенный административными правами через встроенную системную группу «Администратор», производит настройку схемы доступов. В примере добавлен атрибут доступа REG_PATH_NUM (Рисунок «Настройка схемы доступа – добавление атрибута доступа по иерархии регионов»).
Администратор Системы или пользователь, наделенный административными правами через встроенную системную группу «Администратор», производит настройку внутреннего провайдера. В примере в карточке редактирования внутреннего провайдера на вкладке «Маппинг схемы» добавлено соответствие атрибуту доступа по иерархии регионов REG_PATH_NUM к полю модели «user_permissions» REG_PATH_NUM (Рисунок «Настройка внутреннего провайдера – добавление соответствия атрибуту доступа по иерархии регионов к полю модели «user_permissions»).
Рисунок 80. Настройка внутреннего провайдера – добавление соответствия атрибуту доступа по иерархии регионов к полю модели «user_permissions»
В интерфейсе настройки правил доступа к данным модели (см. п. Настройка правил доступа к пользовательской модели) для реализации поставленных целей создайте единственное правило «Данные по своему региону» (Рисунок «Правило «Данные по своему региону»), содержащее условие: значение поля модели REG_PATH_NUM включает значение атрибута пользователя «Путь к региону» (REG_PATH_NUM).
Пользователь Ivanov отнесен к региону 1 («Российская Федерация»). Значение его атрибута REG_PATH_NUM = '1;'. Данный текст присутствует в значениях свойства REG_PATH_NUM всех регионов (всех строк данных «Модели А»). Поэтому пользователь получает доступ ко всем данным в виджетах (Рисунок «Данные, доступные пользователю Ivanov («Российская Федерация»)).
Пользователь Petrov отнесен к региону 2 («Нижегородская область»). Значение его атрибута REG_PATH_NUM = '1;2;'. Данный текст присутствует в значениях свойства REG_PATH_NUM только для записи региона 2 («Нижегородская область»). Поэтому пользователь получает только доступ к данным региона (Рисунок «Данные, доступные пользователю Petrov («Нижегородская область»)).
Остальные введенные в примере пользователи аналогично пользователю Petrov получают доступ только к данным «своих» регионов.
При наличии в «Модели А» информации по дочерним по отношению к регионам уровням (например, городам или районам) пользователи регионов также получили бы доступ и к этим данным в соответствии с тем же принципом, по которому пользователь Ivanov получил доступ ко всем входящим в «Российскую Федерацию» регионам.
Заданные ограничения действуют для виджетов, построенных на данных «Модели А»:
-
для виджетов:
-
в интерфейсе их просмотра;
-
в интерфейсе их редактирования;
-
в интерфейсе их просмотра по прямой ссылке.
-
-
для информационных панелей:
-
в интерфейсе их просмотра;
-
в интерфейсе их редактирования;
-
в интерфейсе их просмотра по прямой ссылке.
-