ACLs programmieren - Teil 5

Der Code

Der Code ist zwar lang, aber recht einfach. Zu Beginn müssen zunächst mehrere Objekte dimensioniert und teilweise auch initialisiert werden. Wichtig sind vor allem die ersten Zeilen:

Dim dbdir As New NotesDbDirectory ("domino7test1")
Dim db As NotesDatabase
Dim session As New NotesSession
Dim currdb As NotesDatabase
Dim doc As NotesDocument
Set currdb=session.CurrentDatabase

Es gibt zwei Datenbank-Objekte. Eines wird für die aktuelle Datenbank benötigt. Das ist das Objekt urrdb. Das andere wird für die verschiedenen Datenbanken genutzt, die der Reihe nach in der Schleife geöffnet werden. Außerdem muss es ein Dokument geben, in das die Ergebnisse der Analyse geschrieben werden.

Folgende Variablen werden für die ACL und die ACL-Einträge benötigt:

Dim acl As NotesACL
Dim entry As NotesACLEntry

Um das Datum der Analyse festzuhalten, muss der aktuelle Zeitpunkt ermittelt werden. Dazu wird, wie auch in dem in Teil 4 vorgestellten Skript, folgender Code verwendet:

Dim datetime As String
datetime = Date$ + Time$

Nach einigen weiteren Dim-Anweisungen erfolgt der Zugriff auf die erste Datenbank im Datenbankverzeichnis. Diese wird nach dem Beginn der Schleife gleich geöffnet.

Set db = dbdir.GetFirstDatabase(DATABASE)
While Not(db Is Nothing)
Call db.Open("","")

Innerhalb der Schleife wird auf die ACL zugegriffen. Die erste ermittelte Eigenschaft ist das maximale Zugriffsniveau für Zugriffe über den Browser, also die Eigenschaft InternetLevel. Die Rückgabewerte werden dabei in der Select-Case- Anweisung in verständlicheren Text umgesetzt:

Set acl = db.ACL
Select Case acl.InternetLevel
Case ACLLEVEL_NOACCESS:
inetAccess = "Kein Zugriff"
Case ACLLEVEL_DEPOSITOR:
inetAccess = "Ersteller"
Case ACLLEVEL_READER:
inetAccess = "Leser"
Case ACLLEVEL_AUTHOR:
inetAccess = "Autor"
Case ACLLEVEL_EDITOR:
inetAccess = "Editor"
Case ACLLEVEL_DESIGNER:
inetAccess = "Designer"
Case ACLLEVEL_MANAGER:
inetAccess = "Manager"
End Select