Технология разработки редактора с возможностью задания пользователям прав доступа к подграфам инфоресурса
Дата последней модификации документа: 07 февраля 2024.
1. Общие сведения
Цель разработки описываемого специального редактора заключается в том, что при групповой разработке информационного ресурса у его владельца может возникнуть необходимость выдать в доступ этот ресурс различным пользователям, при этом указав специальные права их доступа к отдельным его уже существующим подграфам. Как следует из документации к платформе - общими средствами возможно лишь назначить режим доступа ко всему информационному ресрусу ("полный доступ" или "только чтение"). Описываемая технология заменяет эти функциональные возможности, позволяя владельцу вместо выдачи в доступ самого инфоресурса, создать и передать для использования специализированный (формируемый на основе платформенного редактора) редактор для этого инфоресурса (решатель и, возможно, основанный на нём сервис), причём такой в котором каждый подграф (фрагмент) инфоресурса для определённого пользователя может быть:
- предоставлен в доступ только на чтение;
- предоставлен в полный доступ;
- скрыт.
2. Правила назначения прав
При указании прав для подграфов (фрагментов инфоресурса) следует учитывать схему работы базового редактора: при работе с инфоресурсом отображение его вершин (и, таким образом, подграфов) и, соответственно, реализация/контроль доступа осуществляется сверху-вниз. То есть:
- отображение инфоресурса начинается с его корня и далее идёт последовательно по прямым потомкам, поэтому изначально:
- все пользователи должны быть снабжены доступом типа "только чтение" для подграфа, начинающегося с корневой вершины,
- этот режим используется как "текущий";
- а далее при уходе в глубину, если некоторый потомок является корнем подграфа, для которого у пользователя задан некоторый иной режим доступа (отличный от "текущего"), то, начиная с данной вершины (и вглубь) "текущий" режим принимает новое значение (равное этому иному типу доступа), которое действует далее вглубь.
Пример.
Для инфоресурса вида:
R
→ N1
-→ N21
--→ N31
-→ N22
--→ N32
некоторому пользователю для корней подграфов, установлены следующие типы доступа:
- подграфы, начинающиеся с вершины R (требуется данной технологией) и N31, - "только чтение"
- подграф, начинаюцийся с вершины N21, - "полный доступ"
- подграф, начинаюцийся с вершины N22, - "запрет доступа"
Тогда при открытии такого ресурса специально сформированным редактором этот пользователь будет иметь доступ:
- "только чтение" - к вершинам R, N1 и N22 и N31
- "полный доступ" - к вершине N21 (причём если под данной вершиной метаинформация позволяет создавать новое содержимое, кроме вершины N31, то он сможет это выполнить)
- "запрет доступа" - к вершине N32 (она не будет отображена)
Ниже представлено схематичное изображение доступа пользователя к подграфам такого ресурса (тип доступа обозначается цветом: голубая рамка - только чтение, оранжевая - полный доступ, красная - доступ отсутствует; стрелка на рамке указывает направление распространения доступа; подчеркнуты вершины, являющиеся корнями подграфов, которым назначен доступ):
3. Шаги по созданию редактора
- [выполняется владельцем] Из общего Фонда платформы необходимо получить в доступ (в Мой Фонд / Загрузки) 2 информационных ресурса (раздел "Платформа IACPaaS", папка "Редакторы и просмотрщики"):
- Структура прав доступа к фрагментам инфоресурса (тип - метаинформация) - по ссылке;
- Шаблон редактора инфоресурсов с учётом прав доступа (тип - решатель) - как копию.
- [выполняется владельцем] На основе первого инфоресурса (он имеет тип "метаинформация") необходимо в личном фонде создать целевой инфоресурс, в котором указать подграфы имеющегося инфоресурса (который будет наполняться) и права доступа к ним.
При открытии такого инфоресурса запускается системный редактор "Редактор прав доступа к фрагментам инфоресурса", используя который необходимо:
- под корнем данного информационного ресурса создать ссылку на корень целевого инфоресурса, который планируется к заполнению несколькими пользователями (для установки ссылки использовать метаотношение →"Λ");
- под корнем данного ресурса создать вершину "права доступа пользователей к подграфам" (путём копирования);
- под данной вершиной для каждого подграфа инфоресурса, к которому необходимо назначить права доступа:
- создать нетерминал с именем, зависимо-склонированным от корня подграфа (из исходного инфоресурса);
- под данным нетерминалом задать пользователя, которому будет назначен доступ - создать вершину нетерминал (использовать метапонятие "e-mail пользователя") со строковым значением в виде почтового адреса пользователя (редактор проверяет наличие пользователя с таким адресом в платформе);
- под данным нетерминалом указать один из типов доступа ("только чтение" или "полный доступ" или "запрет доступа").
ВАЖНО: как отмечено в предыдущем разделе - необходимо как минимум описать подграф, начинающийся с корневой вершины инфоресурса, для которого всем пользователям указываеатся доступ "только на чтение" (или "полный доступ", если это необходимо).
- [выполняется владельцем] Полученную на шаге 1 копию решателя задач выдать в доступ на чтение всем пользователям, которые должны будут наполнять целевой инфоресурс содержимым, при этом предварительно наполнив этот решатель (с помощью системного сервиса Редактор решателей задач) следующим содержимыи:
- установить под вершиной "собственные инфоресурсы на чтение" в качестве значения параметра "права доступа" ссылку на созданный на шаге 2 инфоресурс;
- установить под вершиной "собственные инфоресурсы" в качестве значения параметра "0" ссылку на инфоресурс, который должен заполняться пользователями.
- [выполняется владельцем или пользователем] Согласно базовой технологии разработки прямой запуск решателя невозможен и каждому пользователю необходимо иметь сервис для его запуска. В случае отсутствия навыков создания сервисов у конечных пользователей, такой сервис (инфоресурс) может быть создан и самим владельцем исходного инфоресурса (который будет заполняться), а затем выдан им (опять же в доступ на чтение) пользователям вместе с решателем. Создание инфоресурса типа "сервис" выполняется согласно базовой технологии, а его наполнение включает:
- указание ссылки на корень решателя (это созданный на шаге 2 инфоресурс),
- задание пустых множеств входных и выходный информационных ресурсов (создаются эти две вершины, без содержимого),
- задание папки по-умолчанию.