Autor Thema: Auswerten der Zugriffsrechte mit LotusScript  (Gelesen 1949 mal)

Offline pl001

  • Aktives Mitglied
  • ***
  • Beiträge: 170
Auswerten der Zugriffsrechte mit LotusScript
« 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

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Auswerten der Zugriffsrechte mit LotusScript
« Antwort #1 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
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Auswerten der Zugriffsrechte mit LotusScript
« Antwort #2 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
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Auswerten der Zugriffsrechte mit LotusScript
« Antwort #3 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
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Auswerten der Zugriffsrechte mit LotusScript
« Antwort #4 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
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline pl001

  • Aktives Mitglied
  • ***
  • Beiträge: 170
Re: Auswerten der Zugriffsrechte mit LotusScript
« Antwort #5 am: 07.06.06 - 14:57:25 »
So, habe das mit dem ErrorHandling mal getestet.
Ist genau das was ich wollte... DANKE!

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz