Domino 9 und frühere Versionen > ND6: Entwicklung

ACL User der Gruppen herausfinden

(1/3) > >>

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