Список Юзеров С Определенной Ролью?

Тема в разделе "Lotus - Программирование", создана пользователем Eugen, 26 июн 2012.

  1. Eugen

    Eugen Well-Known Member

    Регистрация:
    22 мар 2012
    Сообщения:
    172
    Симпатии:
    0
    Добрый день.
    Такой вопрос - возможно ли программно получить список пользователей, обладающих определенной ролью? Если кто-нибудь делал нечто похожее, подскажите пожалуйста.
     
  2. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Можно. Смотри хелп. Там даже примеры есть
    NotesACL class
    NotesACLEntry class
     
  3. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    ИМХО самый простой способ это перебор всех пользователей, если их число не велико.
    roles = notesDatabase.QueryAccessRoles( name$ )
     
  4. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    И что это будет? Роли пользователя? нужно на оборот. Что-то вроде этого
    Код (LotusScript):
    Function GetUserByRoles( Role As String, separator As String ) As String
    Dim ACL As NotesACL
    Dim ACLentry As NotesACLEntry
    Dim Result As String


    Set ACL = db.ACL
    Set ACLentry = ACL.GetFirstEntry

    If separator = "" Then
    separator = ", "
    End If

    While Not ACLentry Is Nothing

    Forall r In ACLentry.Roles

    If r = Role Then
    Result = Result & ACLentry.Name & separator
    End If

    End Forall

    Set ACLentry = ACL.GetNextEntry( ACLentry )
    Wend

    GetUserByRoles = Result

    End Function
     
  5. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    NickProstoNick
    Вместо
    Код (LotusScript):
    Forall r In ACLentry.Roles         
    If r = Role Then
    проще использовать
    Код (LotusScript):
    If ACLentry.IsRoleEnabled(role) Then
    Также нужно учитывать, что мы получаем имена записей ТУД, а не имена пользователей, там могут быть и группы. Для развёртывания групп можно использовать @ExpandNameList.
     
  6. Eugen

    Eugen Well-Known Member

    Регистрация:
    22 мар 2012
    Сообщения:
    172
    Симпатии:
    0
    Проблема в том, что если пользователь включен в группу, и группе назначена роль, то isRoleEnabled пишет, что нет, типа для этого человека такой роли нет.


    ЗЫ:Упс...долго не обновлял страницу, много чего нового появилось.
     
  7. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    db.QueryAccessRoles("userName") вернёт все роли пользователя, даже если он включен в ACL через группу.
     
  8. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Блин... ну тебе готовый код что ли дать? а самому додумать?
    Тут уже почти готовое решение...
     
  9. TIA

    TIA :-)
    Lotus team

    Регистрация:
    15 май 2009
    Сообщения:
    790
    Симпатии:
    0
    >Такой вопрос - возможно ли программно получить список пользователей, обладающих определенной ролью?
    В общем случае не возможно. Роль назначается через ACLEntry. А ACLEntry может соответствовать открытой группе, т.е. с неопределённым составом участников, это Default, Anonymous, маски (*/ACME/COM).
    Лишь открывая БД определяется, какой из ACLEntry имя пользователя соответствует.
     
  10. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Нормально все будет, не вижу проблемы отобрать только пользователей с нужной ролью.
     
  11. Eugen

    Eugen Well-Known Member

    Регистрация:
    22 мар 2012
    Сообщения:
    172
    Симпатии:
    0
    Пробую немного по-другому. Забил на получение роли пользователя. Надо получить состав группы и разослать письма этой группе.
    Пытаюсь обратиться к Names.nsfи получить состав группы как текст. Если вручную в коде прописать получателей - работает. Если по содержимому текстового поля - не работает.
    Код (LotusScript):
    Sub SendMail (GroupName As String)
    Dim Session As New NotesSession
    Dim db As NotesDatabase
    Dim message As NotesDocument

    Dim NamesNSF As NotesDatabase
    Dim GroupsView As NotesView
    Dim GroupCol As NotesDocumentCollection
    Dim Group As NotesDocument
    Dim Members As NotesItem
    Dim servername As String
    Dim path As String

    servername="SERVER01"
    path="names.nsf"   
    Set NamesNSF= New NotesDatabase(servername,path)
    If Not NamesNSF.Isopen Then
    Call NamesNSF.Open(servername,path)
    End If

    Set GroupsView=NamesNSF.Getview("Groups")
    Set GroupCol=GroupsView.Getalldocumentsbykey(GroupName, True)
    Set Group=GroupCol.Getfirstdocument()
    Set members=Group.Getfirstitem("Members")

    Set db=session.CurrentDatabase
    Set Message=db.Createdocument()
    message.Form = "Memo"
    message.Subject = "Уведомление о новой заявке на потребительский кредит"
    message.Principal="Потребительское кредитование"
    Message.SendTo=Members.Text
    Call message.send(False)

    End Sub
    Лезет ошибка: "Unable to send mail, no match found in Name & Address books", на шаге Call message.send(False), не смотря на то, что список получателей присвоился item`ам.
     
  12. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Ошибка в этой строке:
    Код (LotusScript):
    Message.SendTo=Members.Text
    замените на:
    Код (LotusScript):
    Message.SendTo=Members.Values
    Хотя не понятно, зачем раскрывать группу, вполне можно и так (если группа почтовая или многоцелевая):
    Код (LotusScript):
    Message.SendTo = GroupName
     
  13. Eugen

    Eugen Well-Known Member

    Регистрация:
    22 мар 2012
    Сообщения:
    172
    Симпатии:
    0
    Спасибо огромное. Это то, что нужно.
     
Загрузка...
Похожие Темы - Список Юзеров Определенной
  1. gx6060
    Ответов:
    2
    Просмотров:
    419
  2. gx6060
    Ответов:
    6
    Просмотров:
    555
  3. Shandrik
    Ответов:
    6
    Просмотров:
    806
  4. anna
    Ответов:
    8
    Просмотров:
    813
  5. erhe
    Ответов:
    10
    Просмотров:
    790

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