Практическое руководство. Работа с параметрами управления правами на доступ к данным
В 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