Domino 9 und frühere Versionen > Entwicklung
Auswerten der Zugriffsrechte mit LotusScript
pl001:
Hallo, für die FolderReferences verwende ich in folgendes LotusScript als Postopen für die DB:
--- Code: ---Sub Postopen(Source As Notesuidatabase)
Dim session As New NotesSession
Dim db As NotesDatabase
Set db = session.CurrentDatabase
db.FolderReferencesEnabled = True
End Sub
--- Ende Code ---
Das funktioniert soweit auch ganz gut, nur leider erfordert dieses Script Schreibrechte auf der DB. Nutzer die nur lesenden Zugriff auf die DB haben bekommen daher folgende Fehlermeldung.
"Sie sind zur Durchführung dieser Aktion nicht berechtigt"
Meine Idee war nun, dass man das Script entsprechend erweitert um im Vorfeld die Zugriffsrechte zu prüfen und das eigentliche Script entsprechend dieser Prüfung ausführt bzw. überspringt.
Könnt Ihr mir sagen, wie eine solche Bedingung in LotusScript aussehen muss.
Gruß
Peter
Axel:
Schau die mal die Klassen NotesACL und NotesACLentry in der Designer-Hilfe an. Dort findest du alles was du brauchst, incl. Beispiele.
Axel
Tode:
mit NotesACL und NotesACLEntry kommt man (leider) nur weiter, wenn der Benutzer SELBST in der ACL steht, oder man erst mal alle Gruppeneinträge in der ACL rekursiv in Ihre Benutzer ausliest.
Für Deinen Fall würde ich einen pragmatischeren Weg wählen:
Wenn Dein Befehl nicht funktioniert, dann ist das ja kein Beinbruch, und allerhöchstens eine Status- Meldung wert, wenn ich Dich richtig verstanden habe.
Also geh einfach hin und fangs über ErrorHandling ab.
On error goto ErrorNoAccess
db.FolderReferenceEnabled = True
On Error goto 0
Exit Sub
ErrorNoAccess:
Print "Folder references wegen fehlender Berechtigung nicht aktiviert"
End Sub
Wenn Du es nicht so "Pauschal" abhandeln willst, dann lies in ErrorNoAccess einmal die Fehlernummer für "Sie sind zur Durchführung..." über Err() aus und ändere dann die On error zeile:
On Error xxx Goto ErrorNoAccess
mit xxx = herausgefundene Fehlernummer
HTH
Tode
Axel:
--- Zitat von: Tode am 07.06.06 - 08:47:42 ---mit NotesACL und NotesACLEntry kommt man (leider) nur weiter, wenn der Benutzer SELBST in der ACL steht, oder man erst mal alle Gruppeneinträge in der ACL rekursiv in Ihre Benutzer ausliest.
--- Ende Zitat ---
Das ist wohl wahr.
Aber zu dem Weg über das Errorhandling gibt es noch eine Alternative, über die Methode QueryAccess aus der NotesDatabase-Klasse.
Auszug aus der Designer-Hilfe
--- Zitat ---Dim db As NotesDatabase
Dim level As Integer
Set db = New NotesDatabase( "Belem", "check.nsf" )
level = db.QueryAccess( "Susanna Coyle" )
If Susanna Coyle has Author access to the database, level contains ACLLEVEL_AUTHOR.
If Susanna Coyle is a member of a group that has Designer access to the database, and Susanna is not otherwise listed in the ACL, level contains ACLLEVEL_DESIGNER.
If Susanna Coyle is a member of one group that has Editor access to the database and another group that has Designer access to the database, and Susanna is not otherwise listed in the ACL, level contains ACLLEVEL_DESIGNER.
If Susanna Coyle is not explicitly listed in the ACL and is not a member of any groups listed in the ACL, but the Default access of the database is Reader, level contains ACLLEVEL_READER.
--- Ende Zitat ---
Axel
Tode:
Stimmt, QueryAccess gab es schon bei R5...
ich hatte nur an die Pendants QueryAccessRoles und QueryAccessPrivileges gedacht, und die gibt es erst seit R6....
So ist natürlich Deine Lösung die sauberere, weil man den Fehler vermeidet, statt ihn abzufangen wenn er passiert...
Gruß
Tode
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln