User Acl & Postopendocument

Тема в разделе "Lotus - Программирование", создана пользователем Cleric-Lviv, 11 дек 2009.

  1. Cleric-Lviv

    Cleric-Lviv Lotus team
    Lotus team

    Регистрация:
    3 янв 2008
    Сообщения:
    605
    Симпатии:
    0
    Всем привет
    вобщем проблем следующий:
    агентом создаю несколько респонзов. в каждом респонзе есть поле "UserRole" в которое прописивию роль подразделения. в каждом респонзе своя роль.
    дальше пробую открить доку
    смисл такой если нету роль то пользователь может только читать... если есть роль может редактировать
    Код (Text):
    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 Nothing ) Then
    uidoc.EditMode = False

    Elseif Not ( entry.IsRoleEnabled( doc.GetItemValue("UnitRole")(0) )) Then
    continue = False
    uidoc.EditMode=True
    End If
    но не пашет:)........подскажите плз где ошибка....
     
  2. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Жесть.
    Код (Text):
    db.QueryAccessRoles
    вернёт тебе все роли данного человека.

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

    И вообще, причём тут PostOpen?
    Тут скорее QueryOpen + QueryModeChange
    Ну или вообще использование полей типа Author.
    -----------------
    Конечно тут надо использовать Authors.
     
  3. Cleric-Lviv

    Cleric-Lviv Lotus team
    Lotus team

    Регистрация:
    3 янв 2008
    Сообщения:
    605
    Симпатии:
    0
    Omh

    да путаюсь я с етими полями.....впринципе когдя создаю документ то прописиваю... но все равно люди без ролей могут редактировать...
    Код (Text):
    Set res = db.CreateDocument
    res.form = "PrimaryAnalysis"

    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)
     
  4. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Мне кажется, я слишком стар для этого дерьма.
    Я абсолютно не понимаю, что происходит в приведённом тобой куске кода.
    Аццкое копирование айтемов в пределах одного документа выше моего понимания.

    Если хочешь защитить документ бантиками, то юзай примерно такой скрипт на 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]
     
  5. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    это лень! избавляйся скорее! )))))
     
  6. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    Советую разобраться изучить, это база.
    Authors поля позволяют ограничить редактирование документа только пользователям с уровнем доступа на базу Автор.
    Посмотрите, что в итоге получилось в документе, поля действительно авторс и ридерс?
    [post="155464"]Тут[/post] правильно сказано, нельзя так: acl.GetEntry( ses.UserName ) .
    Akupaka - говорить по делу...
     
  7. Cleric-Lviv

    Cleric-Lviv Lotus team
    Lotus team

    Регистрация:
    3 янв 2008
    Сообщения:
    605
    Симпатии:
    0
    OKEN
    ну вчара кажется разобрался с помощю Akupaka :what?: так что жду ево во Львове:))
     
  8. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    Тогда Akupaka - респект )
    И ты молодец )
     
Загрузка...

Поделиться этой страницей