RSS Подписка на статьи RSS Подписка на комментарии Панель инструментов

Блог профессионалов стал частью сайта технической поддержки DocsVision http://support.docsvision.com. Новые материалы будут появляться уже на этом сайте.

Поиск

Ярлыки

авто генерация кода (1) Администрирование DocsVision (60) Атрибутивный поиск (3) База данных (24) Базы знаний (1) Безопасность (1) Бизнес-процессы (20) Блог (2) Вы увидите это первыми (1) Групповые политики (1) Диаграммы (2) Задания (2) Интеграция (2) Карточки DocsVision (14) Конструктор Решений (11) Маркетинг и продажи (4) Навигатор (3) Новое (3) Новости (32) Опрос (4) Опросы DocsVision (4) Оптимизация (3) Отчеты (2) Ошибки (1) Поддержка (14) Полезные ссылки (1) Представления (4) Производительность (5) Разбор полетов (18) Разработка для Workflow (7) разработка карточек (2) Разработка на платформе DocsVision (41) Разработка решений (43) Расширение платформы (1) Расширенные отчеты (9) Решения на платформе DocsVision (6) Сервисы DocsVision (3) Сканеры (3) Справочник сотрудников (1) Справочник типов (1) Установка (1) Утилиты (13) Шлюз в SharePoint (8) Штрихкод (2) Cкрипты карточек (7) DocsVision внутри (1) DocsVision Live (1) FileStream (1) FireFox (2) Opera (1) Powershell (5) Safari (1) SharePoint2007 (1) SharePoint2010 (2) Silverlight (1) UltraViews (1) Vista (1)

Как назначить права в скрипте карточки

Пример назначения прав на карточку из скрипта карточки (через ADSI):

' Rights
iRights = &H1 + &H2 ' read+change!
aEmpl = Array ("DOMAIN\User1","DOMAIN\User2")

' Get secure object
Set oSecureObj = UserSession.AccessManager.GetSecureCard(CardData.ID)
Set oSD = oSecureObj.ADsSecurityDescriptor
Set oDACL = oSD.DiscretionaryAcl

' remove old ace's
Do
bFlag = False
For Each oACE In oDACL
oDACL.RemoveAce (oACE)
bFlag = True
Next
Loop Until bFlag = False

' Add Rights
For n = 0 To iCount
sEmpl = aEmpl(n)
If CStr(sEmpl) <> "" Then
Set oNewAce = CreateObject("AccessControlEntry")
oNewAce.AccessMask = iRights
oNewAce.AceType = 0 ' allowed
oNewAce.AceFlags = 2 'inherit
oNewAce.Trustee = sEmpl
oDACL.AddAce oNewAce
End If
Next
Set oSecureObj.ADsSecurityDescriptor = oSD



Список прав (все значения являются битовой маской и могут суммироваться):

"000F001F"
Полный доступ

"00000001"
Чтение данных объекта

"00000002"
Изменение данных объекта

"00000004"
Создание дочерних объектов

"00000008"
Удаление дочерних объектов

"00000010"
Копирование объекта

"00010000"
Удаление объекта

"00020000"
Чтение разрешений

"00040000"
Изменение разрешений

"00080000"
Смена владельца

"00020001"
Чтение

"0000001E"
Изменение

"00010000"
Удаление

"000C0000"
Владение


При назначении прав в бизнес-процессе или из .net приложений, нужно пользоваться методами .net framework Читать дальше

4 коммент.:

Unknown комментирует...

А как "сносить" права на карточку из БП? Универсальной функцией назначать новые права можно, но почти всегда требуется удалить перед этим старые.

Михаил Захаров комментирует...

Есть пример очистки прав в http://dvprofessionals.blogspot.com/2009/02/docsvision-api.html

Mikle комментирует...

В правах есть разграничения по применению прав :

"Этот объект, дочерние контейнеры и объекты"
- "Этот объект и дочерние контейнеры"
- "Этот объект и дочерние объекты (не контейнеры)",
- "Только дочерние контейнеры и объекты",
- "Только дочерние контейнеры"
- "Только дочерние объекты (не контейнеры)",
- "Только этот объект"

Необходимо отдельно назначить разные права на
-"Только этот объект",
- Только дочерние контейнеры
-"Только дочерние объекты (не контейнеры)"

Пробуем не получается, как в скрипте указывать к каким из этих категорий назначаются права ?

ilyushin.r комментирует...

Исходя из примера, свойство AceFlags как раз и содержит параметр наследования. Что получить какое значение соответствует какому параметру можно перебрать уже существующие права, например подобным циклом:
For Each oACE In oDACL
MsgBox oACE.AceFlags
Next

Отправить комментарий