Autor Thema: ACL - Einträge übersichtlich darstellen  (Gelesen 10009 mal)

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
ACL - Einträge übersichtlich darstellen
« am: 25.12.03 - 18:51:59 »
Hi,

ich suche nach einer Möglichkeit, dass User per Buttonklick alle aktuellen Rechte der DB aufgelistet bekommen.

Daher will ich einen Button einbauen in die DB, der z.B. folgende Auflistung bringt:

Benutzer                | Typ                   | Rechte           | Rollen
----------------------------------------------------------------------------------------
Admins                    Gruppe               Manager          [Admin], [ReadAll]
Beate Turnschuh     Person               Editor              keine
Rainer W.                 Person              Leser               [ReadAll]


Hat schon mal wer sowas in der Art gemacht? Ich will ja das Rad nicht neu erfinden....

Es geht mir auch jetzt nicht um die Darstellung, mir gehts vielmehr darum wie ich die ACL auslesen kann und dann die Ergebnisse in ein String bzw. Array reinbringe.....

TMC
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline animate

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.540
  • Uh, I'm just gonna go find a cash machine.
    • LA2
Re:ACL - Einträge übersichtlich darstellen
« Antwort #1 am: 25.12.03 - 19:28:18 »
ich hab sowas noch nicht gemacht.
das müsste doch recht simpel mit den ACL-Klassen in Lotusscript machbar sein.
Thomas

Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re:ACL - Einträge übersichtlich darstellen
« Antwort #2 am: 28.12.03 - 02:06:06 »
@ganjasmoker ( ;D):
Jip, sollte möglich sein.
Ist aber imho ein ziemlicher Akt, wenn ich mir die ACL-Klasse so ansehe.
Daher frag ich lieber mal hier, ob es evtl. schon eine halbfertige Lösung im www etc. gibt oder jem. ansonsten noch Tipps hierzu parat hat.

TMC
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline animate

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.540
  • Uh, I'm just gonna go find a cash machine.
    • LA2
Re:ACL - Einträge übersichtlich darstellen
« Antwort #3 am: 28.12.03 - 02:58:49 »
also so ein akt ist das ja auch wieder nicht.
Die NotesACL-Klasse hat die GetFirstEntry und die GetNextEntry Methode.
Mit den beiden kannst du durch die ACL Einträge iterieren, sie liefern die ein Objekt der Klasse ACLEntry.
Die Klasse hat Attribute wie z.B. Name, IsGroup, IsPerson, Level und Roles.
Und schon hast du alle Informationen, die du brauchst
Thomas

Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re:ACL - Einträge übersichtlich darstellen
« Antwort #4 am: 28.12.03 - 03:10:31 »
Stimmt, hast eigentlich Recht, hmm,.....

Mit GetFirstEntry / GetNextEntry hol ich mir was drinsteht, und schaue dann jew. nach was die denn alles dürfen.....

Mein Fehler war: Hab in der Designerhelp nur "ACLClass" im Überflug angesehen, interessant ist aber "NotesACLEntry class".

Danke,
TMC


« Letzte Änderung: 28.12.03 - 03:11:32 von TMC »
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline cococo69

  • @Notes Preisträger
  • Senior Mitglied
  • ****
  • Beiträge: 286
  • Geschlecht: Männlich
  • Super dieses Forum!!!
    • Mein Hobby...
Re:ACL - Einträge übersichtlich darstellen
« Antwort #5 am: 21.01.04 - 11:33:55 »
Hallo TMC,

hast du zwischenzeitlich eine Lösung?

Oder hat sonst wer so ein Tool?

Gruß
cococo69

klaussal

  • Gast
Re:ACL - Einträge übersichtlich darstellen
« Antwort #6 am: 21.01.04 - 12:19:54 »
... nimm doch die catalog.nsf

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:ACL - Einträge übersichtlich darstellen
« Antwort #7 am: 21.01.04 - 12:21:20 »
TMC will ja seinen Usern per Buhtong die ACL der aktuellen DB zur Verfügung stellen ...

klaussal

  • Gast
Re:ACL - Einträge übersichtlich darstellen
« Antwort #8 am: 21.01.04 - 12:41:01 »
... agent starten, catalog.nsf durchsuchen und doc anzeigen.
ist mal so eine idee..... :P

Offline Don Pasquale

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.390
  • Geschlecht: Männlich
  • Don Pasquale
    • Auf Verlorenem Posten
Re:ACL - Einträge übersichtlich darstellen
« Antwort #9 am: 21.01.04 - 12:47:59 »
Hi TMC,

das ist Teil einer Routine mit der ich aus der ACL
alle Personen auslese. Ist doch schon mal ein Anfang.

Ciao
Don Pasquale

   Dim ws As New NotesUiWorkspace
   Dim session As NotesSession
   Dim db As NotesDatabase
   Dim doc As NotesDocument
   Dim view As NotesView
   Dim acl As NotesACL
   Dim Entry As NotesACLEntry

   Set db = session.CurrentDatabase
   Set acl = db.ACL
   Set Entry = acl.GetFirstEntry
   While Not Entry Is Nothing
      
      If entry.IsGroup Then
         'Messagebox entry.Name & " ist eine Gruppe."
         Gosub GRUPPEAUSLESEN
      Else
         
         If entry.IsPerson Then
            'Messagebox entry.Name & " ist eine Person."
            Call eintragePerson(entry.name)
         Else
            'Messagebox entry.Name & " ist weder Gruppe noch Person."
         End If
      End If
      Set Entry = ACL.GetNextEntry( Entry )
   Wend
   
   Call ws.ViewRefresh()
   
   Exit Sub
   
   
      ' ******************************** '
   
GRUPPEAUSLESEN:
   
   Dim memfield As Variant
   Dim nd_db As notesdatabase
   Dim g_doc As notesdocument
   Set db = session.currentdatabase
   server$ = db.server
   Set nd_db = New notesdatabase("","")
   flag = nd_db.open(server$, "names.nsf")
   Set view = nd_db.getview("Groups")
   Set g_doc = view.getdocumentbykey(entry.name)
   memfield = g_doc.getitemvalue("members")
   Forall X In memfield
      ename$ = X
      'Messagebox (ename$)
      Call eintragePerson(ename$)      
   End Forall
   Return
   
   
« Letzte Änderung: 21.01.04 - 13:22:45 von Don Pasquale »

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re:ACL - Einträge übersichtlich darstellen
« Antwort #10 am: 21.01.04 - 20:43:52 »
Hi,

bin leider doch noch nicht dazugekommen mich damit näher zu befassen.

Danke für Eure Tipps, werde es mal demnächst angehen.

Matthias
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline sloe

  • Aktives Mitglied
  • ***
  • Beiträge: 175
  • Geschlecht: Männlich
  • Never stop a running admin...
Re:ACL - Einträge übersichtlich darstellen
« Antwort #11 am: 23.01.04 - 10:00:36 »
Hi,
hier auf die Schnelle noch ne Möglichkeit, gibt aber Probleme mit der Übersichtlichkeit, besonders bei Benutzern mit mehreren Rollen.
Code
Sub Initialize
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim acl As NotesACL
   Dim entry As NotesACLEntry
   Dim ACLarray()
   Set db = session.CurrentDatabase
   Set acl = db.ACL
   i = 1
   Puffer = "     "
   Set entry = acl.GetFirstEntry
   While Not ( entry Is Nothing )
      entryRole = ""
      entryLevel = entry.Level
      entryName = entry.Name
      entryUsertype = entry.UserType
      Forall role In entry.Roles
         entryRole = entryRole & role
      End Forall
      Select Case entryLevel
      Case 0 : 
         Level = "NOACCESS"
      Case 1 : 
         Level = "DEPOSITOR"
      Case 2 : 
         Level = "READER"
      Case 3 : 
         Level = "AUTHOR"
      Case 4 : 
         Level = "EDITOR"
      Case 5 : 
         Level = "DESIGNER"
      Case 6 : 
         Level = "MANAGER"
      End Select
      Select Case entryUsertype 
      Case 0 : 
         UserType = "UNSPECIFIED"
      Case 1 : 
         UserType = "PERSON"
      Case 2 : 
         UserType = "SERVER"
      Case 3 : 
         UserType = "MIXED_GROUP"
      Case 4 : 
         UserType = "PERSON_GROUP"
      Case 5 : 
         UserType = "SERVER_GROUP"
      End Select
      Redim Preserve ACLarray(i)
      ACLarray(i) = Level & Puffer & UserType & Puffer & entryName & Puffer & entryRole
      i = i +1
      Set entry = acl.GetNextEntry( entry )
   Wend
   For j = 1 To Ubound(ACLarray)
      BoxMessage =  BoxMessage & ACLarray(j) & Chr(10)
   Next
   Msgbox "Level:             Typ:                       Name:                    Rollen: " & Chr(10) & "------------------------------------------------------------------------------------------------------" & Chr(10) & BoxMessage,0, "ACL-Datenbankinformationen"
End Sub
Gruß
sloe
Gruß
sloe

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re:ACL - Einträge übersichtlich darstellen
« Antwort #12 am: 24.01.04 - 15:44:45 »
Danke sloe, ich werde das mal anpassen, dass man die Infos in Maskenfelder schreibt zwecks Übersichtlichkeit.

Matthias
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re:ACL - Einträge übersichtlich darstellen
« Antwort #13 am: 24.01.04 - 17:51:33 »
 
OK, ich habe mal das ganze entsprechend umgesetzt.


Um für Anwender die ACL-Einträge übersichtlich darzustellen, kann man das Beispiel in der unten angehängten Datenbank verwenden.

Dazu einfach die Maske "box_ACL" und die Aktion "ACL-Einträge anzeigen" (in der View 'ACL') in eine beliebige Datenbank kopieren.

Durch klick auf den Button "ACL-Einträge anzeigen" erhält man dann folgenden Überblick:


Über den Button "Copy to clipboard (CSV)" wird die Tabelle in die Zwischenablage kopiert im csv - Format, dadurch ist ein simpler Import z.B. in Excel einfach möglich.

Dieses Thema werde ich dann noch in Best Practices zum Beitrag  "ACL-Zugriffsrechte" entsprechend ergänzen.

Hier die Datenbank zum Download:
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:ACL - Einträge übersichtlich darstellen
« Antwort #14 am: 24.01.04 - 19:56:14 »
Cool, Matthias ! Und wie immer sieht es gut aus ;-)

Bernhard

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re:ACL - Einträge übersichtlich darstellen
« Antwort #15 am: 24.01.04 - 20:03:59 »
Dankeschön Bernhard :-)

Das Script welches dahintersteckt habe ich von sloe verwendet und angepasst (mehrere Felder, CN-Namen statt voller Name in der Darstellung, etc.).

Jetzt ist aber das Script imo noch zu sehr aufgebläht und könnte man kürzen.

Aber erst mal egal, es erfüllt seinen Zweck :-)

Nice to have wäre noch eine Spalte ob der User z.B. löschen darf. Könnte aber auch verwirren, weil ich z.B. die wiederherstellbaren Löschungen von Notes nie verwende, sondern per Default in der Regel jedem Löschrechte gebe, aber dies im Database-Script wieder unterbinde. Dann gibt es dafür einen Buhtong "Löschen", wo ein entsprechendes Lösch-Flag gesetzt wird. Ein 007 erledigt dann den Rest und schmeisst die nach X Tagen raus. Oder aber der Admin setzt die Doks in einer speziellen Ansicht wieder zurück.

Matthias
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re:ACL - Einträge übersichtlich darstellen
« Antwort #16 am: 26.01.04 - 20:39:56 »
Siehe ab sofort unter Best Practices: ACL-Zugriffsteuerung und Überblick für Anwender

Matthias

Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz