Поделиться через


Практическое руководство. Работа с параметрами управления правами на доступ к данным

В Microsoft Office InfoPath 2007 существует два типа параметров управления правами на доступ к данным: один для защиты доступа к шаблонам форм InfoPath и другой для управления доступом и действиями над данными, содержащимися в заполненных формах. Для работы с этими параметрами при создании шаблона формы выберите пункт Управление учетными данными в меню Файл. Для работы с этим параметрами при заполнении формы выберите пункт Разрешения в меню Файл и щелкните Управление учетными данными. Дополнительные сведения об использовании диалогового окна Разрешения в InfoPath см. в разделе "Создание шаблона формы с ограниченными разрешениями" справки InfoPath.

ЗаметкаЗаметка

Ограничение разрешений доступно только для шаблонов форм, совместимых с InfoPath. Шаблоны форм, совместимые с веб-обозревателем, не поддерживают управление правами на доступ к данным. Если пункт Управление учетными данными отсутствует в меню Файл при разработке шаблона формы, проверьте параметры совместимости.

Объектная модель управления правами на доступ к данным

Используйте класс Permission для доступа к коллекции UserPermissionCollection и параметрам разрешений управления правами на доступ к данным, которые можно применить к форме. Для доступа к объекту Permission, связанному с шаблоном формы, используйте свойство Permission класса XmlForm. Возвращаемый объект Permission предоставляет доступ к коллекции объектов UserPermission, связанных с шаблоном формы и каждым экземпляром формы, созданным с помощью этого шаблона.

Объект Permission и его свойства и методы доступны в зависимости от наличия ограничений разрешений для активного шаблона формы. Чтобы определить наличие ограничений разрешений для формы, используйте свойство Enabled.

Ниже перечислены способы включения разрешений для формы с помощью с свойств и методов класса "Permission".

Для свойства Enabled задается значение true.

Задается значение свойства DocumentAuthor.

Задается значение свойства RequestPermissionUrl.

Для свойства StoreLicenses задается значение true или false.

Вызывается метод ApplyPolicy.

ЗаметкаЗаметка

Если на компьютере пользователя не установлен клиент управления правами Windows, то использование класса Permission приводит к появлению исключения.

Для программной работы с параметрами управления правами на доступ к данным для отдельных пользователей в формах используйте классы UserPermissionCollection и UserPermission.

Объект UserPermission связывает набор разрешений для текущей формы с отдельным пользователем и задает срок действия (необязательно). Для добавления и предоставления пользователю набора разрешений для текущей формы используйте метод Add класса UserPermissionCollection. Для удаления пользователя и его разрешений используйте метод Remove класса UserPermissionCollection. Хотя некоторые разрешения, предоставляемые через интерфейс пользователя, например для печати и срока действия, применяются ко всем пользователям, можно воспользоваться классами UserPermission и UserPermissionCollection для назначения их отдельным пользователям с индивидуальными сроками действия. Объектная модель позволяет разработчикам выполнять перечисление параметров разрешений в форме и предоставлять возможности, позволяющие пользователям формы добавлять в форму разрешения без использования области задач Разрешения для формы или диалогового окна Разрешения.

ЗаметкаЗаметка

Разрешения нельзя применить, если форма находится в режиме просмотра. Поэтому все свойства класса Permission при просмотре формы доступны только для чтения. В режиме просмотра свойство Enabled всегда возвращает значение false, а при попытке кода изменить это значение возникает исключение System.Runtime.InteropServices.COMException и возвращается ошибка "Свойство/метод недоступны в режиме предварительного просмотра". Аналогичным образом, методы, связанные с классами UserPermission и UserPermissionCollection, также будут возвращать это сообщение об ошибке при использовании в режиме просмотра.

Обзор класса "Permission"

Класс UserPermissionCollection предоставляет указанные ниже свойства и один метод.

Имя Описание

Метод ApplyPolicy

Применяет к форме политику с помощью файла шаблона политики.

Свойство DocumentAuthor

Возвращает или задает автора текущей формы в виде адреса электронной почты.

Свойство Enabled

Возвращает или задает значение, указывающее, включены ли для текущей формы параметры разрешений, представленные объектом Permission.

Свойство PermissionFromPolicy

Возвращает или задает значение, указывающее, применяется ли политика разрешений к текущей форме.

Свойство PolicyDescription

Возвращает описание политики, примененной к текущей форме.

Свойство PolicyName

Возвращает имя политики, примененной к текущей форме.

Свойство RequestPermissionUrl

Возвращает или задает файл, URL-адрес или адрес электронной почты для предоставления контактной информации пользователям, которым требуются дополнительные разрешения для текущей формы.

Свойство StoreLicenses

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

Свойство UserPermissions

Возвращает объект UserPermissionCollection для текущей формы.

Обзор класса "UserPermissionCollection"

Класс UserPermissionCollection предоставляет следующие свойства и методы.

Имя Описание

Метод Add (+3 перегрузки)

Добавляет нового пользователя для текущей формы с указанием разрешений и срока действия (необязательно).

Свойство Remove

Удаляет из коллекции объект UserPermission с указанным идентификатором UserId.

Свойство RemoveAll

Удаляет из коллекции все объекты UserPermission.

Свойство Count

Возвращает количество объектов UserPermission в коллекции.

Свойство Item (+1 перегрузка)

Возвращает объект UserPermission.

Обзор класса "UserPermission"

Класс UserPermission предоставляет указанные ниже свойства и один метод.

Имя Описание

Свойство Remove

Удаляет текущий объект UserPermission из разрешений формы.

Свойство ExpirationDate

Возвращает или задает необязательный срок действия разрешений текущей формы, назначенных пользователю, связанному с экземпляром класса UserPermission.

Свойство Permission

Возвращает или задает значение, представляющее разрешения текущей формы, назначенные пользователю, связанному с экземпляром класса UserPermission.

Свойство UserId

Возвращает адрес электронной почты пользователя, разрешения которого для текущей формы определяются указанным объектом UserPermission.

Перечисление "PermissionType"

Разрешения пользователей задаются и считываются с помощью значений перечисления PermissionType.

Имя Описание

PermissionType.Change

Позволяет пользователям просматривать, редактировать, копировать и сохранять форму, но не печатать ее. Эквивалентно сочетанию разрешений Read, Edit, Save и Extract.

PermissionType.Edit

Позволяет пользователю редактировать форму.

PermissionType.Extract

Позволяет пользователю с разрешением Read копировать содержимое формы.

PermissionType.FullControl

Позволяет пользователю добавлять, изменять и удалять разрешения для других пользователей формы.

PermissionType.ObjectModel

Предоставляет пользователю программный доступ к документу формы через его объектную модель. Пользователи без разрешения ObjectModel не могут использовать объектную модель для определения собственных разрешений.

PermissionType.Print

Позволяет пользователю печатать форму.

PermissionType.Read

Позволяет пользователю считывать (просматривать) форму (эквивалентно разрешениям Read и View).

PermissionType.Save

Позволяет пользователю сохранять форму.

PermissionType.View

Позволяет пользователю просматривать (считывать) форму (эквивалентно разрешениям Read и View).

Пример

В следующем примере при нажатии элемента управления Кнопка выполняется получение объекта UserPermissionsCollection для текущей формы, добавление уровня разрешений "Изменение доступа" для пользователя и задание срока действия, который составляет два дня от текущей даты.

public void CTRL1_Clicked(object sender, ClickedEventArgs e)
{
   string strExpirationDate = DateTime.Today.AddDays(2).ToString();
   DateTime dtExpirationDate = DateTime.Parse(strExpirationDate);

   this.Permission.UserPermissions.Add("someone@example.com", 
      PermissionType.Change, dtExpirationDate);
}
Public Sub CTRL1_Clicked(ByVal sender As Object, _
   ByVal e As ClickedEventArgs)
   Dim strExpirationDate As String = _
      DateTime.Today.AddDays(2).ToString()
   dtExpirationDate As DateTime = DateTime.Parse(strExpirationDate)

   Me.Permission.UserPermissions.Add("someone@example.com", _
      PermissionType.Change, dtExpirationDate)
End Sub