Domino 9 und frühere Versionen > ND6: Entwicklung
ACL User der Gruppen herausfinden
DannyCrown:
Hallo Forum,
habe mal wieder ein Problem. Habe schon viel hier im Forum gesucht und schon viel ausprobiert aber bis jetzt hat noch nichts zum gewünschten Ergebnis geführt. Habe eine Funktion geschrieben die überprüfen soll, ob eine bestimtme Rolle bei einem User gesetzt ist. Das klappt allerdings nur, wenn der Benutzer als einzelne Person in der ACL drin steht und nicht wenn er in einer Gruppe ist. Hab es schon mit UserGroupNameList der Notessession Klasse probiert, doch diese Property liefert mir nicht das richtige Ergebnis zurück. Vll. kann mir ja jemand weiterhelfen.
--- Code: ---Function istRolleGesetzt() As Boolean
'Aufruf der Fehlerbehandlung
On Error Goto ErrHandler
'Variablen Dekleration
Dim session As New NotesSession
Dim db As NotesDatabase
Dim acl As NotesACL
Dim entry As NotesACLEntry
Dim rückgabewert As Boolean
Set db = session.CurrentDatabase
Set acl = db.ACL
rückgabewert = False
'In der Forall Schleife werden alle Rollen des Users durchlaufen.
'Falls er die Rolle hat wird der Rückgabewert auf True gesetzt
If Not entry Is Nothing Then
Forall r In entry.Roles
If r = "[RolleA]" Then
rückgabewert = True
End If
End Forall
End If
istRolleGesetzt= rückgabewert
Ende:
Exit Function
ErrHandler:
Call OutputError(Err, Erl(), Error())
Resume Ende
End Function
--- Ende Code ---
Axel:
Das Problem hatte ich auch schon öfters.
Hier eine mögliche Lösung: Prüfung der Zuordnung von Rollen mit Script
Axel
DannyCrown:
mh, das hatte ich auch schon hier im Forum, aber diese funktion liefer mir immer true zurück ???
edit: Es klappt, musste die datenbank nur nochmal schließen. Danke!
klaussal:
--- Code: ---Function userHasRole (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 varReturn As Variant
Dim varReturn2 As Variant
Dim varCompare As String
Dim Rolle2 As String
Dim Rolle3 As String
Dim subString As String
On Error Goto userHasRoleError
Set db = session.currentDatabase
Rolle2 = Rolle
Rolle3 = "[" + Rolle + "]"
'eval = Evaluate("@UserRoles")
eval = Evaluate("@UserNamesList")
varReturn = Arraygetindex( eval, Rolle2)
varReturn2 = Arraygetindex(eval, Rolle3)
If Isnull(varReturn) And Isnull(varReturn2) Then
'Messagebox "nix Gefunden"
userHasRole = False
Else
'Messagebox "gefunden"
userHasRole = True
End If
Exit Function
userHasRoleError:
userHasRole = False
Msgbox "Fehler in userHasRole: " & Cstr(Err) & ": " & Error$
Exit Function
End Function
--- Ende Code ---
TRO:
Warum nicht
roles = notesDatabase.QueryAccessRoles( name$ )
??
Thomas
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln