Форум программистов, компьютерный форум, киберфорум
HCL Notes: Программирование
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/74: Рейтинг темы: голосов - 74, средняя оценка - 4.95
0 / 0 / 0
Регистрация: 30.12.2007
Сообщений: 583
1

User Acl & Postopendocument

10.12.2009, 14:57. Показов 13492. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет
вобщем проблем следующий:
агентом создаю несколько респонзов. в каждом респонзе есть поле "UserRole" в которое прописивию роль подразделения. в каждом респонзе своя роль.
дальше пробую открить доку
смисл такой если нету роль то пользователь может только читать... если есть роль может редактировать

Код
Dim ses As New NotesSession
Dim db As NotesDatabase
Dim acl As NotesACL
Dim entry As NotesACLEntry
Dim doc As NotesDocument
Dim uidoc As NotesUIDocument

Set db = ses.CurrentDatabase
Set ws = New NotesUIWorkspace
Set uidoc = ws.CurrentDocument
Set doc = uidoc.Document
v = doc.GetItemValue("UnitRole")(0)
Set acl = db.ACL
Set entry = acl.GetEntry( ses.UserName )

If ( entry Is Nothyng ) Then
uidoc.EditMode = False

Elseif Not ( entry.IsRoleEnabled( doc.GetItemValue("UnitRole")(0) )) Then
continue = False
uidoc.EditMode=True
End If
но не пашет........подскажите плз где ошибка....
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.12.2009, 14:57
Ответы с готовыми решениями:

User Type в Acl
Не могу вспомнить, на что влияет "User type" в ACL, кто-нибудь в курсе?

Acl
Всем привет! задача: есть полев поле которое может принимать следующие значения или все сразу:...

Acl и Lotusscript
Помогите выловить багу, досталась по наследству. В общем суть такова, есть документ который может...

Replica Id в Acl
Коллеги, подскажите пожалуйста со следующей проблемой: Есть база "Договора" и база "Платежи", в...

7
0 / 0 / 1
Регистрация: 30.06.2007
Сообщений: 2,153
10.12.2009, 15:02 2
Жесть.

Код
db.QueryAccessRoles
вернёт тебе все роли данного человека.

Хинт: человека в ACL можно указать неявно.

И вообще, причём тут PostOpen?
Тут скорее QueryOpen + QueryModeChange
Ну или вообще использование полей типа Author.
-----------------
Конечно тут надо использовать Authors.
0
0 / 0 / 0
Регистрация: 30.12.2007
Сообщений: 583
10.12.2009, 15:14 3
Omh

да путаюсь я с етими полями.....впринципе когдя создаю документ то прописиваю... но все равно люди без ролей могут редактировать...

Код
Set res = db.CreateDocument
res.form = "PrimaryAnalysys"

uniq = doc.GetItemValue("Unique")(0)
Set item = doctemp.GetFirstItem("UnitName")
Set itemall = New NotesItem(res, "Role", "*")
Set itemrole = doctemp.GetFirstItem("UnitRole")
itemrole.IsAuthors = True
itemall.IsReaders = True


Call res.CopyItem(item, "UnitName")
Call res.CopyItem(itemrole, "UnitRole")
Call res.CopyItem(itemall, "Role")
Call res.ReplaceItemValue("Unique", uniq)

Call res.MakeResponse(doc)
Call res.Save(True,False)
0
0 / 0 / 1
Регистрация: 30.06.2007
Сообщений: 2,153
10.12.2009, 15:28 4
Мне кажется, я слишком стар для этого дерьма.
Я абсолютно не понимаю, что происходит в приведённом тобой куске кода.
Аццкое копирование айтемов в пределах одного документа выше моего понимания.

Если хочешь защитить документ бантиками, то юзай примерно такой скрипт на QueryModeChange/QueryOpen:
<!--shcode--><pre><code class=vb>Dim Roles As Variant
Roles = db.QueryAccessRoles(session.UserName)
if IsNull(ArrayGetIndex(Roles, doc.getitemValue(YOUR_FIELD_WITH_ROLE)(0)))) then Continue = False[/CODE]
0
0 / 0 / 0
Регистрация: 04.10.2007
Сообщений: 2,977
10.12.2009, 16:14 5
Цитата Сообщение от Omh
Мне кажется, я слишком стар для этого дерьма.
Я абсолютно не понимаю, что происходит в приведённом тобой куске кода.
это лень! избавляйся скорее! )))))
0
0 / 0 / 0
Регистрация: 15.05.2009
Сообщений: 1,454
10.12.2009, 16:59 6
Цитата Сообщение от Cleric-Lviv
да путаюсь я с етими полями.....впринципе когдя создаю документ то прописиваю... но все равно люди без ролей могут редактировать...
Советую разобраться изучить, это база.
Authors поля позволяют ограничить редактирование документа только пользователям с уровнем доступа на базу Автор.
Посмотрите, что в итоге получилось в документе, поля действительно авторс и ридерс?
Тут правильно сказано, нельзя так: acl.GetEntry( ses.UserName ) .
Akupaka - говорить по делу...
0
0 / 0 / 0
Регистрация: 30.12.2007
Сообщений: 583
11.12.2009, 11:33 7
OKEN
ну вчара кажется разобрался с помощю Akupaka :what?: так что жду ево во Львове)
0
0 / 0 / 0
Регистрация: 15.05.2009
Сообщений: 1,454
11.12.2009, 12:29 8
Тогда Akupaka - респект )
И ты молодец )
0
11.12.2009, 12:29
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.12.2009, 12:29
Помогаю со студенческими работами здесь

Проблема с Acl ...
Создаю роль (Dim acl as NotesACL): ... Call acl.AddRole( inputdoc.RoleName(0) ) ... ...

Обход Acl
Давно обсуждалась темка о том, что в бд где по умолчанию в ACL стоит No Access пользователь...

ACL для View
Если создавать View через меню, невозможно указать правила ограничения доступа Можно ли программно...

Вапрос по группам в Acl
Добрый день! В ACL пользователи прописаны не явно а по группам. Можно ли при помощи скрипта...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru