Domino 9 und frühere Versionen > Entwicklung
Miglieder einer Rolle per Scipt abfragen
nieke:
Hallo zusammen!
Ich möchte gerne per LotusScript abfragen, ob der CurrentUser Mitglied einer bestimmten Rolle ist.
Ich wollte dazu die Mitglieder einer bestimmten Rolle abfragen und dann mit Contains feststellen, ob dieser User Mitglied dieser Rolle ist.
Wie kriege ich denn per Script heraus, welche Mitglieder eine Rolle hat? Habt Ihr eine Idee?
koehlerbv:
Mit Evaluate und @UserNamesList.
Und immer daran denken: Lokal gibt es ohne konsistente ACL keine Rollen.
Bernhard
nieke:
... dann werd' ich das mal so versuchen.
Ich dachte, diese Funtkon @UsernameList würde es eventuell auch in LotusScript geben.
DANKE für den Tip!
klaussal:
... so sollte es gehen ....
Function userHasRoleHaendler (Rolle As String) As Variant
Dim session As New NotesSession
Dim db As NotesDatabase
Dim acl As NotesACL
Dim aclEntry As NotesACLEntry
Dim eval As Variant
Dim varReturn2 As Variant
Dim varCompare As String
Dim Rolle2 As String
Dim Rolle3 As String, Rolle4 As String
Dim subString As String
On Error Goto userHasRoleError
Set db = session.currentDatabase
Rolle3 = "[" + Rolle + "]"
eval = Evaluate("@UserNamesList")
varReturn2 = Arraygetindex(eval, Rolle3)
If Isnull(varReturn2) Then
'Messagebox "nix Gefunden"
userHasRoleHaendler = False
Else
'Messagebox "gefunden"
userHasRoleHaendler = True
End If
On Error Goto 0
Exit Function
userHasRoleError:
userHasRoleHaendler = False
Msgbox "Fehler in userHasRoleHaendler: " & Cstr(Err) & ": " & Error$
Exit Function
End Function
caru:
Hi... mit Evaluates zu arbeiten ist immer eine unschöne Angelegenheit....
versuch mal diese Funktion:
Der Name ist etwas dumm gewählt, zumal die funktion ursprünglich etwas anderes gemacht hat :).
Die funktion funktioniert so....
Du gibst einen Username, die Db zum durchsuchen und eine Rolle an, die funktion gibt dir entweder "true" zurück wenn der User die Rolle hat, oder eben "false". Wenn du das in eine Schleife packst, kannst du damit auch mehrere User abarbeiten...
Function checkUserRoles (TheName As NotesName, Database As NotesDatabase, Byval RoleName As String) As Integer
Dim aclist As NotesACL
Set aclist = Database.acl
Dim entry As NotesACLEntry
Set entry = aclist.getEntry(TheName.Abbreviated)
If entry Is Nothing Then
Messagebox "Sie sind nicht als Benutzer dieser Anwendung eingetragen", 0 + 16, "Kein ACL Eintrag"
checkUserRoles = False
Exit Function
End If
Dim found As Integer
found = False
Forall r In entry.Roles
If r = "" Then
found = False
Elseif r = RoleName Then
found = True
End If
End Forall
checkUserRoles = found
End Function
ist vieleicht noch etwas verbesserungsbedürftig, aber besser als evaluate konstruktionen ;).
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln