Autor Thema: Miglieder einer Rolle per Scipt abfragen  (Gelesen 2652 mal)

Offline nieke

  • Aktives Mitglied
  • ***
  • Beiträge: 107
  • Geschlecht: Weiblich
  • I love YaBB 1G - SP1!
Miglieder einer Rolle per Scipt abfragen
« am: 14.10.03 - 10:08:05 »
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?


Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Miglieder einer Rolle per Scipt abfragen
« Antwort #1 am: 14.10.03 - 10:11:52 »
Mit Evaluate und @UserNamesList.
Und immer daran denken: Lokal gibt es ohne konsistente ACL keine Rollen.

Bernhard

Offline nieke

  • Aktives Mitglied
  • ***
  • Beiträge: 107
  • Geschlecht: Weiblich
  • I love YaBB 1G - SP1!
Re:Miglieder einer Rolle per Scipt abfragen
« Antwort #2 am: 14.10.03 - 10:15:11 »
... 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

  • Gast
Re:Miglieder einer Rolle per Scipt abfragen
« Antwort #3 am: 14.10.03 - 10:15:48 »
... 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

Offline caru

  • Frischling
  • *
  • Beiträge: 5
  • Geschlecht: Männlich
  • oder wie!? oder wat!? un wieso un weshalb?
Re:Miglieder einer Rolle per Scipt abfragen
« Antwort #4 am: 14.10.03 - 13:53:02 »
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 ;).
oder wie!? oder wat!? un wieso un weshalb?

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Miglieder einer Rolle per Scipt abfragen
« Antwort #5 am: 14.10.03 - 13:59:36 »
Deine Funktion ist nur brauchbar, wenn der betreffende User namentlich in der ACL steht, was wohl eher selten der Fall sein wird.
In der (üblichen) Praxis hilft sie also nicht weiter.

Evaluate ermöglicht den sauberen Aufruf dokumentierter Routinen, die in Notes eingebaut sind.

Bernhard

Offline caru

  • Frischling
  • *
  • Beiträge: 5
  • Geschlecht: Männlich
  • oder wie!? oder wat!? un wieso un weshalb?
Re:Miglieder einer Rolle per Scipt abfragen
« Antwort #6 am: 14.10.03 - 14:12:36 »
Hm... in der Tat :). Werde das bei Gelegenheit verbessern... und das nächste mal den Mund nicht so weit aufreißen ;)).

Aber Evaluates mag ich trozdem nicht.


oder wie!? oder wat!? un wieso un weshalb?

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re:Miglieder einer Rolle per Scipt abfragen
« Antwort #7 am: 14.10.03 - 15:12:48 »
Was stört Dich an Evaluate? Alle Nachteile, die das Teil früher mal hatte, wurden in R5 allmählich beseitigt und seit ca. 5.0.4 kannst Du davon ausgehen, dass Evaluate eine ganz saubere und elegante Variante ist, um etwas Notes-Spezifisch "berechnet" zu bekommen. Ich halte es für eine tolle Sache, insbesondere in ND6, wo die @Engine neu gebaut ist und absolut wunderschön läuft
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Miglieder einer Rolle per Scipt abfragen
« Antwort #8 am: 14.10.03 - 16:20:34 »
Ich mag jetzt hier zwar keine Pro-/Contra-Evaluate-Debatte anzetteln, aber ... Evaluate sollte man dort einsetzen, wo es paßt oder massiv Code einspart (und damit die Performance steigert - @functions sind meist schneller).
Das Problem von nieke ist dafür geradezu ein Musterbeispiel: @UserNamesList liefert "at once" alles, was man wissen will - in einer Zeile. Will man selbiges mit LS nachbauen, wird das eine "längere" (vorsichtig ausgedrückt !) Geschichte, da man ja unter anderem aus nested groups usw. berücksichtigen muß oder "mindere Rechte überschreiben höhere Rechte - nicht aber bei namentlicher Nennung" u.a.
Beispiel: Ich will prüfen, ob der User die Rolle [Basic] hat.
Die Rolle hat in der ACL die Gruppe "AllStaff". In AllStaff stehen die Gruppen "Nord", "Süd" und "Mitte". In "Mitte" stehen die Gruppen "Mitte-Technik", "Mitte-Operations", "Mitte-Vertrieb" und "Mitte-Einkauf". In "Mitte-Technik" steht nun endlich der Name des aktuellen Users. Das muß ich mir jetzt aber merken, da der aktuelle User nochmal namentlich aufgeführt ist, dort aber nicht die Rolle [Basic] hat ...
Oder ich mach ein Evaluate von @UserNamesList ;-)

Bernhard

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re:Miglieder einer Rolle per Scipt abfragen
« Antwort #9 am: 14.10.03 - 16:29:47 »
Genau, Bernhard, das ist 101% mein Standpunkt
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz