<< Click to Display Table of Contents >> Разработка > Элементы разработки > Разработка документов Строгий доступ к документам |
По умолчанию в Directum RX не настроена возможность включать строгий доступ к документам. Если система установлена локально, строгий доступ настраивает администратор или разработчик системы.
C помощью среды разработки вы можете настроить:
•программное включение строгого доступа;
•включение по кнопке из карточки документа;
•совместный режим шифрования и строгого доступа;
•передача прав доступа замещающему.
При разработке учитывайте особенности по работе с правами для документов со строгим доступом.
Важно. При модификации системы и настройке интеграции необходимо отслеживать, чтобы документы со строгим доступом не уходили в другие системы, так как в них данные могут храниться в незащищенном виде. Если от имени пользователя, входящего в роль «Служебные пользователи», выполняется чтение или запись документов, для которых установлен строгий доступ, то в лог-файле соответствующего сервиса Directum RX фиксируется ошибка (Error).
Программное включение строгого доступа
В этом варианте настройки строгий доступ включается системой автоматически, в зависимости от настроек в программном коде. При этом пользователь вручную включать строгий доступ не может.
Для программной настройки доступны:
•метод AccessRights.SetStrictMode() – установить режим работы строгого доступа;
•метод AccessRights.CanSetStrictMode() – проверить возможность изменения режима строгого доступа;
•свойство AccessRights.StrictMode – режим работы строгого доступа. Возможные значения: None – строгий доступ выключен; Strict – включен строгий доступ; Enhanced – включен усиленный строгий доступ.
Пример1. Программное включение строгого доступа
Если необходимо, чтобы при создании приказа для него автоматически включался строгий доступ, то перекройте тип документа «Приказ» (Sungero.RecordManagement.Order) и добавьте код в событии сущности «Создание»:
public override void Created(Sungero.Domain.CreatedEventArgs e)
{
_obj.AccessRights.SetStrictMode(Sungero.Core.AccessRightsStrictMode.Strict);
}
Пример 2. Выдача прав доступа в зависимости от режима строгого доступа
// Если для документа выключен строгий доступ, то выдать права на изменение документа.
if(document.AccessRights.StrictMode == Sungero.Core.AccessRightsStrictMode.None)
{
document.AccessRights.Grant(user, DefaultAccessRightsTypes.Change)
}
Включение строгого доступа из карточки документа
В этом варианте настройки пользователь с полными правами сам включает строгий доступ по кнопке в карточке нужного ему документа. Это можно настроить следующими способами:
•администратор в конфигурационном файле добавляет параметры и перечисляет в них идентификаторы типов документов, для которых доступно включение строгого доступа;
•разработчик переопределяет действие ToggleStrictRights – включить или отключить строгий доступ. Например, разработан новый тип документа и нужно, чтобы пользователи могли устанавливать строгий доступ для документов этого типа. Для этого в редакторе типа документа в событии Выполнение/Возможность выполнения переопределите логику работы действия. Подробнее пример разработки см. в разделе «Как настроить строгий доступ к документу».
Совместный режим шифрования и строгого доступа
Если для типа документа настроены шифрование и строгий доступ через интерфейс системы, то по умолчанию в карточке документа они объединяются в одно действие .
При необходимости можно отключить совместный режим. Тогда в карточке документа будут два разных действия. Это можно сделать следующими способами:
•администратор добавляет параметр в конфигурационный файл;
•разработчик переопределяет действие ToggleStrictRightsAndEncryption – включить или отключить строгий доступ и шифрование документа. Например, разработан тип документа и нужно, чтобы пользователи сами определяли, когда нужно зашифровать документ, а когда включить строгий доступ. Для этого в редакторе типа документа в событии Выполнение/Возможность выполнения переопределите логику работы действия.
Передача прав доступа замещающему
По умолчанию права на документ с включенным строгим документом не передаются замещающему. Но могут возникнуть ситуации, когда для конкретного замещения все же необходимо передавать права. Например, если помощник замещает руководителя и выполняет действия в системе от его имени. В этой ситуации вы можете программно настроить передачу прав замещающему. Для этого используйте свойство DelegateStrictRights – признак того, что нужно делегировать строгий доступ.
Пример. Создание системного замещения и передача прав на документы со строгим доступом
/// </summary>
/// <param name="substitutedUser">Отсутствующий пользователь.</param>
/// <param name="substitute">Замещающий пользователь.</param>
public static void CreateSystemSubstitution(IUser substitutedUser, IUser substitute)
{
if (Equals(substitutedUser, substitute))
return;
var substitution = Substitutions.Create();
substitution.User = substitutedUser;
substitution.Substitute = substitute;
substitution.IsSystem = true;
// Передавать права на документы со строгим доступом.
substitution.DelegateStrictRights = true;
substitution.Save();
}
Примечание. В истории работы с замещением фиксируется информация о том, что строгий доступ делегирован.
Особенности работы с правами доступа
Если задается программный код для обработки документов сервисами Directum RX, то учитывайте особенности:
•программно со стороны сервисов можно работать с документом, для которого включен строгий доступ;
•строгий доступ можно повышать до усиленного со стороны сервисов, но нельзя обратно понизить до строгого доступа. Иначе при обращении к документам возникнет исключение.
При выполнении методов Grant(), Revoke() и RevokeAll() права доступа не меняются, если действие выполняется от пользователя:
•у которого нет полных прав на документ;
•входящего в роль «Служебные пользователи». При этом программный код выполняется на сервисе, и для документа включен усиленный строгий доступ;
•входящего в роль «Служебные пользователи», и у него нет полных прав на документ. При этом программный код выполняется не на сервисе.
В этой ситуации в лог-файл записывается информация, что права не могут быть выданы или изъяты.
© Компания Directum, 2024 |