Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: mrx am 04.09.03 - 11:33:53
-
Hallo,
kann mir jemand sagen wie ich in Lotus Script abfragen kann ob der aktuelle Benutzer mitglied einer bestimmten Rolle ist oder nicht?
Also quasi die @IsMember bzw. @IsNotMember funktion nur halt in Lotus Script.
Gruß
Malte.
-
Bevor Du Dir 'nen Wolf programmierst: Nimm' Evaluate.
Bernhard
-
mal schnell zusammengezimmert
Sub Click(Source As Button)
Dim roles As Variant
roles = Evaluate("@UserRoles")
flag = False
Forall r In roles
If Cstr(r) = "[Support]" Then flag = True
End Forall
If flag = True Then
Messagebox "Yip !!", 0+64+0+0,"Error"
End If
End Sub
-
Bitte schön:
Dim s As New NotesSession
Dim userName As New NotesName(s.UserName)
Dim db As NotesDatabase
Dim acl As NotesACL
Dim entry As NotesACLEntry
Set db = s.CurrentDatabase
Set acl = db.ACL
user2 = username.Abbreviated
Set entry = acl.GetEntry(user2)
If Not entry Is Nothing Then
If Entry.IsRoleEnabled("[admin]" ) Then
continue = True
Else
Messagebox "Sie dürfen keine Dokumente löschen. ", 0, "Fehler"
continue = False
End If
End If
-
Da ist mir eknori zuvor gekommen!!! ;D ;) :D
-
Robert, was machst Du, wenn der User nicht namentlich in der ACL drin steht, sondern als Gruppenmitglied ?
-
Meinst du vielleicht das ich dann ein problem habe? ??? weiß nicht sag mir was du dann machst? Ist da vielleicht das script von eknori doch besser?
-
Jo, nur so kann man das lösen (oder durch rekursive Gruppenauflösung über das NAB - das ist dann aber kein Dreizeiler ;-)
Bernhard
-
Ist das das gleich wie:
Dim HasRole As Variant
HasRole = Evaluate( |@IsMember("[top5user]"; @UserRoles)| )
If HasRole(0) <> 0 Then
Continue = True
Elseif HasRole(0) = 0 Then
Msgbox "You don't have permission to this folder.", 0 + 16, "No Access"
Continue = False
End If
robert
-
So geht's auch ;-)
-
Na dann mach ich das so wenn der user in einer Gruppe steht!!!! ;D ;D ;D ;)
-
Dann lass uns das gleich mal in eine Funktion reinpacken
Function UserHasRole ( role As String ) As Variant
UserHasRole = False
Dim varACLRoles As Variant
varACLRole = Evaluate( |@IsMember("| & role & |"; @UserRoles)| )
If varACLRole(0) <> 0 Then
UserHasRole = True
End If
End Function
die läßt sich dann schön mittels
Sub Click(Source As Button)
Msgbox UserHasRole ( "[DB-ADMIN]" )
End Sub
aufrufen
-
Ulrich, hast Du Option Declare nicht gesetzt ? ;-)
Dim varACLRoles As Variant
varACLRole = ....
;-)
Bernhard
-
... in einigen Anwendungen habe ich mir angewöhnt für jeden User ein Profildokument anzulegen. In ein Listenfeld trage ich die Rollen des Users ein. Damit ist es mir möglich jederzeit über alle Rollenzugehörigkeiten informiert zu sein => sehr nützlich bei Supportanfragen - aber es lässt sich auch sonst überall verwenden...
ata
-
Ulrich, hast Du Option Declare nicht gesetzt ? ;-)
Dim varACLRoles As Variant
varACLRole = ....
;-)
Bernhard
upps, *schäm* ; aber das macht den Code natürlich noch einmal eine Zeile schlanker; das Dim kannst du ja dann auch weglassen ;D