Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: pl001 am 07.06.06 - 07:58:34

Titel: Auswerten der Zugriffsrechte mit LotusScript
Beitrag von: pl001 am 07.06.06 - 07:58:34
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

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
Titel: Re: Auswerten der Zugriffsrechte mit LotusScript
Beitrag von: Axel am 07.06.06 - 08:24:00
Schau die mal die Klassen NotesACL und NotesACLentry in der Designer-Hilfe an. Dort findest du alles was du brauchst, incl. Beispiele.


Axel
Titel: Re: Auswerten der Zugriffsrechte mit LotusScript
Beitrag 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.

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
Titel: Re: Auswerten der Zugriffsrechte mit LotusScript
Beitrag von: Axel am 07.06.06 - 08:57:26
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.

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.



Axel
Titel: Re: Auswerten der Zugriffsrechte mit LotusScript
Beitrag von: Tode am 07.06.06 - 10:10:57
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
Titel: Re: Auswerten der Zugriffsrechte mit LotusScript
Beitrag von: pl001 am 07.06.06 - 14:57:25
So, habe das mit dem ErrorHandling mal getestet.
Ist genau das was ich wollte... DANKE!