Autor Thema: Abfrage User mit bestimmter Rolle aus ACL  (Gelesen 3908 mal)

Offline s.berger

  • Aktives Mitglied
  • ***
  • Beiträge: 128
Abfrage User mit bestimmter Rolle aus ACL
« am: 02.12.09 - 12:40:20 »
Hallo liebes Forum,

ich bin leider nicht in der Forensuche fündig geworden. Darum meine Frage:

Wie kann ich bestimmte Namen aus einer ACL abfragen, die eine von mir gegebene Rolle haben? Hintergrund ist, dass ich an die User mit dieser Rolle eine automatische E-Mail schicken will. Kann mir jemand hierzu helfen?  :-:

Vielen Dank im voraus.

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Abfrage User mit bestimmter Rolle aus ACL
« Antwort #1 am: 02.12.09 - 13:00:19 »
Hallo,

Die Klassen NotesACL und ACLEntry koennen hierbei sehr hilfreich sein.
Ich geben jedoch noch zu bedenken.
Was machst Du mit Gruppen die in der ACL stehen und die von Dir gesuchte Rolle haben bzw. Gruppen, die diese Rolle haben, jedoch keine Personengruppen (z.B. Servergruppen) sind.


Andreas

Offline s.berger

  • Aktives Mitglied
  • ***
  • Beiträge: 128
Re: Abfrage User mit bestimmter Rolle aus ACL
« Antwort #2 am: 02.12.09 - 14:07:52 »
Die beiden LS Klassen habe ich mir schon angeschaut, nur fehlt mir offenbar der richtige Denkansatz.

stringArray = notesACL.Roles
notesACL.GetEntry( name$ )
und
stringArray = notesACLEntry.Roles

helfen mMn nicht, weil ich ja einen Namen zu einer gegebenen Rolle suche. Hat jemand einen Rat?
Danke!
« Letzte Änderung: 02.12.09 - 14:09:43 von s.berger »

Offline Klafu

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.944
  • Geschlecht: Männlich
  • Remember the Cookies!
Re: Abfrage User mit bestimmter Rolle aus ACL
« Antwort #3 am: 02.12.09 - 14:13:13 »
Du durchsuchst jeden einzelnen ACLEntry und checkst in einer Schleife alle Rollen der Einträge.
Wenn die Rolle mit der von dir gesuchten übereinstimmt schreibst du den Namen in ein Array.
Das vergleichst du dann danach mit dem Directory und bekomms so die Mail Adresse

Chris
„Der einzige Mensch, der sich vernünftig benimmt, ist mein Schneider. Er nimmt jedesmal neu Maß, wenn er mich trifft, während alle anderen immer die alten Maßstäbe anlegen in der Meinung, sie paßten auch heute noch...“

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Abfrage User mit bestimmter Rolle aus ACL
« Antwort #4 am: 02.12.09 - 15:26:33 »
So ungefaehr.

- Schleife zum Durchlaufen aller Eintraege der ACL
- Eintrag in die Klasse ACLEntry setzen
- hier gibt es die Methode IsRoleEnabled("Name der Rolle")

Liefert diese ein True zurueck, so ist fuer diesen Eintrag in der ACL die gesuchte Rolle gesetzt.


Andreas

Offline s.berger

  • Aktives Mitglied
  • ***
  • Beiträge: 128
Re: Abfrage User mit bestimmter Rolle aus ACL
« Antwort #5 am: 04.12.09 - 14:40:19 »
So ungefaehr.

- Schleife zum Durchlaufen aller Eintraege der ACL
- Eintrag in die Klasse ACLEntry setzen
- hier gibt es die Methode IsRoleEnabled("Name der Rolle")

Liefert diese ein True zurueck, so ist fuer diesen Eintrag in der ACL die gesuchte Rolle gesetzt.


Andreas

Hallo,
Danke für die Tipps. So sieht mein fertiges script zum versenden der E-Mail aus:

Sub Click(Source As Button)
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim workspace As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Dim doc, docmail As NotesDocument
   Dim nam As NotesName   
   Dim namen As String
   
   Dim acl As NotesACL
   Dim entry As NotesACLEntry
   Dim rtitem As NotesRichTextItem
   
   Set db = session.CurrentDatabase
   Set uidoc = workspace.CurrentDocument
   Set doc = uidoc.Document
   
   Set acl = db.ACL
   Set entry = acl.GetFirstEntry
   
   While Not (entry Is Nothing)
      If entry.IsRoleEnabled("myrole") Then
         Set nam = New NotesName(entry.Name)
         namen = nam.Common & "@mydomain"

         Set docmail = New NotesDocument(db)
         docmail.Form = "Memo"
         docmail.SendTo = namen
         docmail.Subject = "Approved"
         Set rtitem = New NotesRichTextItem( docmail, "Body")
         Call rtitem.AppendDocLink(doc,"link to your doc")
         Call rtitem.AddNewline(1)
         Call rtitem.AppendText("link to your doc")
         Call docmail.Send( False )
      End If
      Set entry = acl.GetNextEntry(entry)
   Wend
   Call uidoc.Refresh
End Sub

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Abfrage User mit bestimmter Rolle aus ACL
« Antwort #6 am: 04.12.09 - 15:01:51 »
Hallo,

Auf den ersten Blick sieht es gut aus.

Nur kommen wir nun zu  dem Thema Gruppen.

Was wuerde Dein Script tun, wenn es sich bei dem Eintrag aus der ACL um eine Gruppe handelt?
Und noch schoener, was passiert, wenn es sich bei der Gruppe um eine Gruppe vom Typ
"Nur Zugriffskontrollliste" handelt.
(an Gruppen diesen Typs koennen ja bekannlichermassen keine Mails versendet werden.


Andreas

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Abfrage User mit bestimmter Rolle aus ACL
« Antwort #7 am: 04.12.09 - 15:15:55 »
Die Gruppe tut doch nicht weh, Andreas - dann geht die Mail an die Gruppe. Wenn die Gruppe natürlich nicht für das Mailen geeignet ist, dann geht das in die Hose. Ergo wäre nicht der Code schlecht, sondern die ACL: Wenn die Anwendung Mails an bestimmte ACL-Einträge senden kann / soll, dann darf man dafür auch keine nur-ACL-Einträge verwenden.

Bernhard

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Abfrage User mit bestimmter Rolle aus ACL
« Antwort #8 am: 04.12.09 - 15:21:51 »
@Bernhard

Prinzipiell gebe ich Dir recht.
Nur, eventuell auch schon aus eigener Erfahrung, bei mir zumindest schon aufgetreten, kommt der Wunsch nach dem Senden der Mail an bestimmte Personen/Gruppen in der ACL er im Nachhinein.
Und da sind die Gruppen schon definiert und eingetragen und auch wie nicht anders zu Erwarten weiss neimend mehr so genau darueber bescheid.


Andreas

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Abfrage User mit bestimmter Rolle aus ACL
« Antwort #9 am: 04.12.09 - 15:38:49 »
Da sind wir dann beim Henne-Ei-Problem: Die ACL ist nicht korrekt bestimmt bzw. nicht bestimmungsgemäss aufgebaut. Wie reagieren? Der ErrorHandler, der das Problem beim Mailing an ACL-only-Groups verkündet, ist natürlich selbstverständlich. Nur: Ist da eventuell das Kind schon in den Brunnen gefallen? Sollte eventuell erst gemailt werden und im Fehlerfall eine weitere Aktion dann abgebrochen werden? Oder muss man gar vor jedem Mailing den Gegencheck im Domino Directory machen? Braucht der arme überforderte Admin vielleicht einen "Application Health Check" Button?

Ich habe mir einen Otto-Motor in mein Auto einbauen lassen. Auf eigenen Wunsch. Wer ist dafür verantwortlich, was mit dem schwarzen Schlauch in das Loch hinten im Auto eingespritzt wird, damit der Motor nicht kurz nach dem Starten verröchelt? Der Auto-Hersteller? Bestimmt nicht  ;)

Bernhard

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz