ACLs programmieren - Teil 4

Der nächste Schritt ist die Vorbereitung des Zugriffs auf die ACL und die Bearbeitung von Einträgen in dieser ACL:

Dim acl As NotesACL
Set acl = db.ACL
Dim entry As NotesACLEntry

Hier muss zunächst die ACL der angegebenen Datenbank geöffnet werden. Im folgenden Schritt wird ein Eintrag in der ACL vorbereitet. Der nun folgende Block des Codes setzt den Zugriffslevel in die korrekten Werte um, wobei mit den definierten Konstanten im System gearbeitet wird. Die Verarbeitung erfolgt über eine Select- Case-Anweisung:

Dim zugriffslevel As Integer
Select Case doc.Zugriffsniveau(0)
Case "Manager":
zugriffslevel = ACLLEVEL_MANAGER
Case "Entwickler":
zugriffslevel = ACLLEVEL_DESIGNER
Case "Editor":
zugriffslevel = ACLLEVEL_EDITOR
Case "Autor":
zugriffslevel = ACLLEVEL_AUTHOR
Case "Leser":
zugriffslevel = ACLLEVEL_READER
Case "Ersteller":
zugriffslevel = ACLLEVEL_DEPOSITOR
Case "Kein Zugriff":
zugriffslevel = ACLLEVEL_NOACCESS
End Select

Der Wert wird in der Variablen zugriffslevel abgelegt, die im folgenden Schritt wieder verwendet wird. Hier wird nun der ACL-Eintrag gesetzt:

Set entry = New NotesACLEntry (acl, doc.benutzer(0),
zugriffslevel)

Damit ist aber erst ein Teil der Informationen aus der Maske verarbeitet. Im folgenden Schritt müssen nun noch die Optionen verarbeitet werden. Diese finden sich als Listenwerte in dem zusammengefassten Optionsfeld agentcreate, das man natürlich bei der Änderung der Maske auch noch hätte umbenennen können. Hier wird mit eine Forall-Schleife gearbeitet, die für jeden Eintrag in der Liste durchlaufen wird. Eine andere Möglichkeit gibt es nicht, da man die Länge des Arrays nicht kennt und daher nicht vorhersagen kann, wie viele Werte in diesem enthalten sind. Einfache For-Next-Schleifen sind damit nicht nutzbar. Die Struktur der Schleife ist wie folgt:

Forall optionswert In doc.agentcreate
If optionswert = "Private Agenten erstellen" Then
entry.CanCreatePersonalAgent = True
End If
If optionswert = "Private Ordner und Ansichten _
erstellen" Then
entry.CanCreatePersonalFolder = True
End If
If optionswert = "Gemeinsame Ordner und _
Ansichten erstellen" Then
entry.CanCreateSharedFolder = True
End If
If optionswert = "LotusScript und Java Agenten _
erstellen" Then
entry.CanCreateLSOrJavaAgent = True
End If
If optionswert = "Erstellen öffentlicher _
Dokumente" Then
entry.CanCreateDocuments = True
End If
If optionswert = "Löschen öffentlicher _
Dokumente" Then
entry.CanDeleteDocuments = True
End If
If optionswert = "Replizieren oder Kopieren _
öffentlicher Dokumente" Then
entry.CanReplicateOrCopyDocuments = True
End If
End Forall