суббота, 28 февраля 2009 г.

Работа с правами на объекты через DocsVision API

Частый вопрос, который возникает при разработке на платформе DocsVision, как выполнить различные операции с правами. Описание работы с правами приведено в документации "Руководство разработчика на платформе".

По ссылке вы можете скачать небольшой пример работы с правами. Проект на VB.NET для Visual Studio 2008.

Скачать пример.

3 комментария:

  1. добрый день. пробовал переписать пример под .Net библиотеки, так почему-то права назначаются только на объект. т.е. вложенные файлы не получают прав от карточки :(

    ОтветитьУдалить
  2. В процедуре назначения прав SetRights обратите внимание на два параметра Inheritance и Propagation. Они отвечают за наследование.
    Чтобы наследовалось укажите inheritance = InheritanceFlags.ContainerInherit Or InheritanceFlags.ObjectInherit
    propagation = PropagationFlags.InheritOnly

    Про эти флаги можно почитать в MSDN

    ОтветитьУдалить
  3. именно так я и делал.



    SetRights(secureCard, CardDataRights.Read, sAccount, InheritanceFlags.ContainerInherit Or InheritanceFlags.ObjectInherit, PropagationFlags.InheritOnly)

    Private Sub SetRights(ByRef SecureCard As CardData, ByVal Rights As Integer, ByVal AccountName As String, ByVal Inheritance As InheritanceFlags, ByVal Propagation As PropagationFlags)

    Try
    ' Получение описателя прав карточки
    Dim newrights As CardDataSecurity = SecureCard.GetAccessControl()
    ' Создание нового разрешения – совокупного права чтения
    Dim rule As New CardDataAccessRule(AccountName, Rights, AccessControlType.Allow, Inheritance, AccessControlType.Allow)
    ' Добавление нового разрешения к описателю прав

    newrights.AddAccessRule(rule)
    ' Сохранение измененного описателя прав
    SecureCard.SetAccessControl(newrights)

    Catch ex As Exception
    Dim sMessage As String = "Error in rights assignment: " & AccountName
    End Try
    End Sub

    ОтветитьУдалить