Пример применения правил атрибутного доступа

В п. Исходная задачаРезультат применения настроенного правила доступа к данным «Модели А» приведен пример настройки правил атрибутного доступа для пользователей внутреннего провайдера «AW» с типом «Локальный (user_permissions)», иллюстрирующий изложенные выше принципы.

Исходная задача

Необходимо ограничить доступ к данным по территориальной принадлежности. Есть источник и модель «Модель А», содержащая данные из источника, извлекаемые SQL-запросом. В самих данных есть столбец, содержащий названия региона России, к которому относятся значения в строке (Рисунок «Данные к которым будет предоставляться (ограничиваться) доступ, и их привязка к регионам»).

Рисунок 71. Данные, к которым будет предоставляться (ограничиваться) доступ и их привязка к регионам

Данные, к которым будет предоставляться (ограничиваться) доступ и их привязка к регионам

Необходимо обеспечить доступ:

  • пользователям центрального аппарата – к данным по всем регионам;

  • пользователям регионов – к данным только своего собственного региона.

Чтобы выстроить такие разрешения, необходимо:

  1. расширить данные исходной таблицы недостающей информацией об иерархии регионов;

  2. обеспечить в информации о пользователях (в данных модели «user_permissions») сведения о принадлежности пользователя региону и ветке иерархии, содержащей данный регион.

Настройка модели данных «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» для примера»).

Рисунок 72. Структура модели «user_permissions» для примера

Структура модели «user_permissions» для примера

В основе – данные таблицы «Пользователи». Они дополнены данными таблицы «Территориальная структура» на основе связи по равенству поля ID_REG. В результате для каждого пользователя добавлено название его региона и значение REG_PATH_NUM.

Дополнение «Модели А» информацией об иерархии регионов

Таблица «Территориальная структура» используется также для дополнения данных «Модели А» информацией об иерархии регионов (Рисунок «Структура «Модели А» с привязанной таблицей «Территориальная структура» и ограничением только регионами к которым привязаны пользователи»). Эту операцию может выполнить пользователь, создавший данную модель или имеющий права на ее редактирование. В примере добавлен тип связи таблиц «inner join». Это ограничивает состав строк в модели данных только теми регионами, к которым привязаны пользователи.

Рисунок 73. Структура «Модели А» с привязанной таблицей «Территориальная структура» и ограничением только регионами к которым привязаны пользователи

Структура «Модели А» с привязанной таблицей «Территориальная структура» и ограничением только регионами к которым привязаны пользователи

Настройка схемы доступа

Администратор Системы или пользователь, наделенный административными правами через встроенную системную группу «Администратор», производит настройку схемы доступов. В примере добавлен атрибут доступа REG_PATH_NUM (Рисунок «Настройка схемы доступа – добавление атрибута доступа по иерархии регионов»).

Рисунок 74. Настройка схемы доступа – добавление атрибута по иерархии регионов

Настройка схемы доступа – добавление атрибута по иерархии регионов

Настройка маппинга атрибутов доступа схемы и провайдера

Администратор Системы или пользователь, наделенный административными правами через встроенную системную группу «Администратор», производит настройку внутреннего провайдера. В примере в карточке редактирования внутреннего провайдера на вкладке «Маппинг схемы» добавлено соответствие атрибуту доступа по иерархии регионов REG_PATH_NUM к полю модели «user_permissions» REG_PATH_NUM (Рисунок «Настройка внутреннего провайдера – добавление соответствия атрибуту доступа по иерархии регионов к полю модели «user_permissions»).

Рисунок 75. Настройка внутреннего провайдера – добавление соответствия атрибуту доступа по иерархии регионов к полю модели «user_permissions»

Настройка внутреннего провайдера – добавление соответствия атрибуту доступа по иерархии регионов к полю модели «user_permissions»

Настройка правил доступа к данным «Модели А»

В интерфейсе настройки правил доступа к данным модели (см. п. Настройка правил доступа к пользовательской модели) для реализации поставленных целей создайте единственное правило «Данные по своему региону» (Рисунок «Правило «Данные по своему региону»), содержащее условие: значение поля модели REG_PATH_NUM включает значение атрибута пользователя «Путь к региону» (REG_PATH_NUM).

Рисунок 76. Правило «Данные по своему региону»

Правило «Данные по своему региону»

Результат применения настроенного правила доступа к данным «Модели А»

Пользователь Ivanov отнесен к региону 1 («Российская Федерация»). Значение его атрибута REG_PATH_NUM = '1;'. Данный текст присутствует в значениях свойства REG_PATH_NUM всех регионов (всех строк данных «Модели А»). Поэтому пользователь получает доступ ко всем данным в виджетах (Рисунок «Данные, доступные пользователю Ivanov («Российская Федерация»)).

Рисунок 77. Данные, доступные пользователю Ivanov («Российская Федерация»)

Данные, доступные пользователю Ivanov («Российская Федерация»)

Пользователь Petrov отнесен к региону 2 («Нижегородская область»). Значение его атрибута REG_PATH_NUM = '1;2;'. Данный текст присутствует в значениях свойства REG_PATH_NUM только для записи региона 2 («Нижегородская область»). Поэтому пользователь получает только доступ к данным региона (Рисунок «Данные, доступные пользователю Petrov («Нижегородская область»)).

Рисунок 78. Данные, доступные пользователю Petrov («Нижегородская область»)

Данные, доступные пользователю Petrov («Нижегородская область»)

Остальные введенные в примере пользователи аналогично пользователю Petrov получают доступ только к данным «своих» регионов.

При наличии в «Модели А» информации по дочерним по отношению к регионам уровням (например, городам или районам) пользователи регионов также получили бы доступ и к этим данным в соответствии с тем же принципом, по которому пользователь Ivanov получил доступ ко всем входящим в «Российскую Федерацию» регионам.

Заданные ограничения действуют для виджетов, построенных на данных «Модели А»:

  • для виджетов:

    • в интерфейсе их просмотра;

    • в интерфейсе их редактирования;

    • в интерфейсе их просмотра по прямой ссылке.

  • для информационных панелей:

    • в интерфейсе их просмотра;

    • в интерфейсе их редактирования;

    • в интерфейсе их просмотра по прямой ссылке.