Is User A Member Of A (Nested) Group ?
Working with nested groups, it can be hard to determine if a user is member of the “base” group. The following class contains a method to do the job.
IsGroupMember ( GroupName, UserName ) calls method ExplodeGroup, which fills an array with all members of the group. It also resolves nested groups.
IsGroupMember now checks if the username is a member of this array using Lotusscript function ArrayGetIndex.
Class NotesDominoDirectory
Private strServer As String
Public Sub new (server As String )
strServer = server
End Sub
Public Function ExplodeGroup (GroupName As String) As Variant
Dim s As New Notessession
Dim db As New NotesDatabase ( Me.strServer, "names.nsf" )
Dim doc As NotesDocument
Dim view As NotesView
Dim i As Integer, j As Integer, k As Integer
Dim arrGrp1, arrGrp2 As Variant
Set view=Db.GetView ("($VIMGroups)")
Set doc=View.GetDocumentByKey (GroupName)
Redim arrMembers (1) As Variant
j = 0
If Not (doc Is Nothing) Then
arrGrp1= Doc.GetItemValue ("Members")
For i= 0 To Ubound (arrGrp1)
arrGrp2= Me.ExplodeGroup (arrGrp1 (i))
Redim Preserve arrMembers (Ubound (arrGrp2) + j) As Variant
For k= 0 To Ubound (arrGrp2)
arrMembers (j) = arrGrp2 (k)
j = j + 1
Next
Next
Else
Redim arrMembers (0) As Variant
arrMembers (0) = GroupName
End If
ExplodeGroup= Arrayunique (arrMembers)
End Function
Public Function IsGroupMember ( strGroup As String, strUser As String ) As Boolean
IsGroupMember = False
If (Arraygetindex (Me.ExplodeGroup (strGroup), strUser , 5)) Then
IsGroupMember = True
End If
End Function
Public Function IsGroupMemberExt ( strGroup As String, strUser As String ) As Boolean
' uses undocumented function
Dim arrMembers As Variant
IsGroupMemberExt = False
arrMembers =
Evaluate(|@ExpandNameList("|& strServer & |":"names.nsf";"|& strGroup &|")| )
If (Arraygetindex ( arrMembers, strUser, 5)) Then
IsGroupMemberExt = True
End If
End Function
End Class
Here is a sample of how to check if Ulrich Krause is member of group “Everybody”
Sub Click(Source As Button)
Dim res As Variant
Dim dd As New NotesDominoDirectory ("serv01/singultus")
Msgbox dd.IsGroupMember ( "Everybody" , "CN=Ulrich Krause/O=singultus")
End Sub
There is also an undocumented @formula @ExpandNameList to expand a group and all nested groups to all the names.
Function IsGroupMemberExt ( strGroup As String, strUser As String ) As Boolean
' uses undocumented function
Dim arrMembers As Variant
IsGroupMemberExt = False
arrMembers =
Evaluate(|@ExpandNameList("|& strServer &|":"names.nsf";"|& strGroup &|")| )
If (Arraygetindex ( arrMembers, strUser, 5)) Then
IsGroupMemberExt = True
End If
End Function
In Staffel zwei muss sich das Team um Professor Nick Cutter (Douglas Henshall) nicht nur mit den Kreaturen aus vergangenen und zukünftigen Zeitaltern herumschlagen, sondern auch mit einer gefährlichen Verschwörung in den eigenen Reihen …
You want an agent to automatically run each time a Lotus® Domino® server starts up. How can this be accomplished?

