Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Christopher am 02.05.06 - 10:21:47
-
Moin Moin Männer´s,
weiß jemand von Euch wie ich rausfinden kann ob eine Person X z.B. Die Rolle [Admin] besitzt. Per LS.
Ich hatte mal eine Funktion gefunden die prüft ob der akutelle Nutzer eine Rolle besitzt. Das funktioniert auch sehr gut.
Function RoleEnabled(sRole As String) As Integer
Dim vResult As Variant
vResult = Evaluate(|@IsMember("| & sRole & |"; @UserRoles)|)
If vResult(0) = 1 Then
RoleEnabled = 1
Else
RoleEnabled = 0
End If 'If vResult(0) = 1
End Function
Beispielaufruf:
If RoleEnabled("[Admin]") Then
Messagebox "Rolle Admin ist gesetzt"
Else
Messagebox "Rolle Admin ist nicht gesetzt"
End If
-
Du willst das für eine beliebige Person prüfen, nicht für die gerade eingeloggte, oder?
In Notes 5 ist das schwierig zu implementieren, in Notes 6 gibt es dafür eine Methode:
Returns the roles of a person, group, or server in a database.
Note This method is new with Release 6.
Defined in
NotesDatabase
Syntax
roles = notesDatabase.QueryAccessRoles( name$ )
Das Problem ist (vor Notes 6), dass man alle ACL-Einträge prüfen muss. Bei Gruppen muss man prüfen, ob der User dort enthalten ist. Dabei ist zu berücksichtigen, dass es Untergruppen geben kann.
Andreas
-
Ne es geht um das weiterbearbeiten eines Antrages und wenn person X geählt worde will ich prüfen ob die ausgeählte Person X eine gewisse Rolle besitzt.
-
Auf Andreas' Frage bist Du jetzt überhaupt nicht eingegangen, Christopher. Es fällt daher jetzt mehr als schwer, hier irgendwelche Antworten zu versuchen, da unklar ist, was Du erreiche nwillst.
Bernhard
-
Für mich ist eigentlich klar was Christopher will.
Es soll für den nächsten Bearbeiter eines Antrages innerhalb eines Workflows ermittelt werden, ob diese Person eine bestimmte Rolle besitzt oder nicht.
Die nächste Frage die sich hier dann stellt, ob die Person direkt in der ACL steht oder in einer Gruppe. Wenn Gruppen, dann wird's aufwändig.
Mit den ACL-Klassen sollte es aber machbar sein.
Axel
-
Ich habe so etwas ähnliches mit Gruppen realisiert, da ich es nicht schön finde, wenn (viele) Personen direkt in der ACL stehen.
Allerdings muss man sich da eine Funktion "IsUserInGroup" unter R5 leider bauen....(der Rekursiv durch alle Untergruppen geht!)
Ich habe das nie mit hoher Performance hinbekommen, daher befülle ich in meiner Applikation (jede Nacht...) pro Person ein Konfigurationsdokumente, dass die Gruppen-Mitgliedschaft enthält. Unter R6 ist es ja zum Glück nicht mehr so aufwendig... daher habe ich mich nicht mehr genauer damit beschäftigt... Ein nicht von mir verfolgter Ansatz war auch dass man per LDAP eine IsMember Anfrage durchführen kann... Allerdings weiß ich nicht wirklich ob das gut funktionieren kann, mittels Lotus Script.
Falls die Clients nur R5 sind und ein R6 Server vorliegen sollte?! Könntest du ggf. mit Glombi's Ansatz dass ermitteln über einen Agenten, der auf dem Server läuft....
Gruss
Chris
-
Danke Leute! Also ich werde mir was anderes einfallen lassen.
-
Für mich ist eigentlich klar was Christopher will.
Es soll für den nächsten Bearbeiter eines Antrages innerhalb eines Workflows ermittelt werden, ob diese Person eine bestimmte Rolle besitzt oder nicht.
Genau das wollte ich erreichen! Sorrry, wenn ich mich etwas umständlich ausgedrückt hatte.