Autor Thema: ACL-Abfrage ohne Zugriffsberechtigung? (LotusScript)  (Gelesen 5759 mal)

Offline sp4c3

  • Frischling
  • *
  • Beiträge: 12
Hallo zusammen,

ich habe folgendes Problem:

Ich will mehrer Datenbanken als normal angemeldeter User abfragen. Dieser User hat nicht auf alle Datenbanken, die abgefragt werden können, Zugriff.

Problem: Kommt eine Datenbank ohne Zugriff an die Reihe, bricht das Script mit der Fehlermeldung "ABC cannot open database XYZ"


Meine Idee war, vorher per QueryAccess das Accesslevel zu prüfen, aber das funktioniert genauso wenig. Es erscheint die gleiche Meldung.

Hier mal ein Auszug aus dem Code:

Code
[...]
	Dim session As New NotesSession
	Dim workspace As New NotesUIWorkspace
	Dim db As NotesDatabase
	Dim user As NotesName
	Dim user_acl As String
	Dim dbn As String
	Dim view As NotesView
[...]
	Set user = session.CreateName(session.UserName)
	dbn = uidoc.FieldGetText("Datenbanken")
	dbnarray = Split(dbn, ";")
[...]
	Forall x In dbnarray
		Set db = New NotesDatabase( "EWNS", dbnarray(i))
		user_acl = user.canonical
		Messagebox(db.QueryAccess(user_acl))
		If ( db.QueryAccess(user_acl) < ACCLEVEL_READER ) Then
			Messagebox ("Kein Zugriff auf Datenbank '" + db.Title + "'")	
			Print ("Kein Zugriff auf Datenbank '" + db.Title + "'")	
		Else
			Print ("Durchsuche Datenbanken... " + db.Title)	
			Set view = db.getview("(Aufgaben nach Manager)")
[...]
« Letzte Änderung: 28.09.09 - 11:33:51 von sp4c3 »

BigWim

  • Gast
Re: ACL-Abfrage ohne Zugriffsberechtigung? (LotusScript)
« Antwort #1 am: 28.09.09 - 11:33:21 »
vielleicht kannst Du ja den Fehler mit On Error abfangen und "individuell" behandeln.

Markus

Offline Klafu

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.944
  • Geschlecht: Männlich
  • Remember the Cookies!
Re: ACL-Abfrage ohne Zugriffsberechtigung? (LotusScript)
« Antwort #2 am: 28.09.09 - 11:34:11 »
Wenn du das Script mit der Server ID Signierst ist keine Lösung ?

Chris
„Der einzige Mensch, der sich vernünftig benimmt, ist mein Schneider. Er nimmt jedesmal neu Maß, wenn er mich trifft, während alle anderen immer die alten Maßstäbe anlegen in der Meinung, sie paßten auch heute noch...“

Offline sp4c3

  • Frischling
  • *
  • Beiträge: 12
Re: ACL-Abfrage ohne Zugriffsberechtigung? (LotusScript)
« Antwort #3 am: 28.09.09 - 16:16:55 »
Hallo,

vielen Dank schonmal für eure schnellen Antworten.

@Klafu
wie geht das denn?
Das Script soll per Schaltfläche ausgelöst werden.

@BigWorm
Das ist wohl die beste Lösung, nur bekomm ich das im Moment nicht so umgesetzt, wie ich es haben will. Wird aber wohl nur an der dicken Leitung liegen, auf der ich im Moment stehe. :-)

Ich melde mich die Tage noch einmal - komme im Moment nur wenig dazu, mich um Notes zu kümmern.

Grüße,
Andreas

Offline Thomas Schulte

  • @Notes Preisträger
  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re: ACL-Abfrage ohne Zugriffsberechtigung? (LotusScript)
« Antwort #4 am: 28.09.09 - 16:21:59 »
Wenn Du keinen Zugriff auf die Datenbank hast dann ist das Return deines Set Nothing. Dagegen kannst du prüfen.
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: ACL-Abfrage ohne Zugriffsberechtigung? (LotusScript)
« Antwort #5 am: 28.09.09 - 16:44:00 »
Nö, Thomas. Dahin kommst Du gar nicht, weil Err sofort mit 4060 belegt wird. Damit ist auch der ErrorHandler für diesen Fall sehr einfach zu bauen.

Bernhard

Offline sp4c3

  • Frischling
  • *
  • Beiträge: 12
Re: ACL-Abfrage ohne Zugriffsberechtigung? (LotusScript)
« Antwort #6 am: 29.09.09 - 09:29:44 »
Ich versuche mich gerade an "On Error" - allerdings bekomme ich immer folgende Fehlermeldung:

"Error number must be INTEGER constant: LSERR_NOTES_DBNOACCESS"

Unter "(Declarations)" ist folgendes angegeben:
%INCLUDE "lserr.lss"
%INCLUDE "lsconst.lss"

Code:
Code
On Error lsERR_NOTES_DBNOACCESS Goto test
[...]
test:
« Letzte Änderung: 29.09.09 - 09:51:42 von sp4c3 »

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: ACL-Abfrage ohne Zugriffsberechtigung? (LotusScript)
« Antwort #7 am: 29.09.09 - 09:43:02 »
Damit stehen zwei Dinge fest:
- Bei Dir fehlt Option Declare
- Du hast noch nicht in die beiden .lss-Files geschaut (das sollte man vor dem Posten aber mindestens tun).

LSERR_NOTES_DBNOACCESS ist in lsxbeerr.lss deklariert.

Bernhard

Offline sp4c3

  • Frischling
  • *
  • Beiträge: 12
Re: ACL-Abfrage ohne Zugriffsberechtigung? (LotusScript)
« Antwort #8 am: 29.09.09 - 10:17:56 »
Hallo koehlerbv,

danke für deine Antwort.
Das mit der falschen lss-File... unerklärlich wie mir sowas passieren kann. Ich wusste eigentlich, dass es die lsxbeerr.lss ist.
Das funktioniert soweit jetzt auch.

Ich hätte da aber noch eine Verständnisfrage. Ich hoffe ich bekomm sie auch verständlich ausgedrückt:
Hier mal etwas Code dazu:
Code
	On Error lsERR_NOTES_DBNOACCESS Goto test
[...]
	i=0
	Forall x In dbnarray
		Set db = New NotesDatabase( "EWNS", dbnarray(i) )
		Print ("Durchsuche Datenbanken... " + db.Title)
		Set view = db.getview("(Aufgaben nach Manager)")
[...]
test:
		i=i+1	
	End Forall	

Innerhalb dieser Forall-Schleife passiert meine komplette Bearbeitung zur Datenbank, die bei einem Error nicht ausgeführt werden kann/soll, daher habe ich die Sprungmarke "test" an's Ende der Forall-Schleife gesetzt, damit der komplette Kram übersprungen wird.

Jetz habe ich folgendes Phänomen:
- Kommt der Fehler einmal vor (nur eine Datenbank ohne Zugriff), bekomme ich am Ende des Scripts eine Meldung "No Resume" - Das Script wird aber korrekt ausgeführt
- Existieren zwei Datenbanken ohne Zugriff, bricht das Script beim Versuch, die zweite Datenbank zu öffnen, ohne Errorhandling ab. Es erscheint für diese Datenbank die gleiche Meldung, als wäre kein Errorhandling angelegt.

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: ACL-Abfrage ohne Zugriffsberechtigung? (LotusScript)
« Antwort #9 am: 29.09.09 - 10:22:42 »
Hallo Andreas,

Du musst den Fehler "behandeln" und nicht nur registrieren. In Deinem Fall passiert das mit einem Resume.
Eine Variante wäre ein
Resume Next,
bevor Du Deine Variable i inkrementierst.

Bernhard

Offline sp4c3

  • Frischling
  • *
  • Beiträge: 12
Re: ACL-Abfrage ohne Zugriffsberechtigung? (LotusScript)
« Antwort #10 am: 29.09.09 - 10:52:56 »
Hallo Bernhard,

erst einmal Danke für deine Unterstützung! Es funktioniert jetzt. Ich habe das jetzt wie folgt aufgebaut:

Code
	On Error lsERR_NOTES_DBNOACCESS Goto test
[...]
	i=0
	Forall x In dbnarray
		Set db = New NotesDatabase( "EWNS", dbnarray(i) )
		Print ("Durchsuche Datenbanken... " + db.Title)
		Set view = db.getview("(Aufgaben nach Manager)")
[...]
test2:
		i=i+1	
	End Forall
[...]
	Exit Sub
test:
	Resume test2
EndSub

Damit wird die Schleife bei einem Fehler 4060 nun übersprungen - genau wie ich es haben wollte :)

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: ACL-Abfrage ohne Zugriffsberechtigung? (LotusScript)
« Antwort #11 am: 30.09.09 - 00:16:47 »
So funktioniert es zwar, aber warum Du jetzt dafür gleich zwei Labels und damit zwei Sprungmarken brauchst, erschliesst sich mir nicht. Merke: Mit jeder Sprungmarke verkompliziert sich Dein Code. Die Chance, das einem das später auf die eigenen Füsse (oder noch schlimmer: Auf die nachfolgender Entwickler) fällt, wächst dabei exponentiell, Andreas.

Bernhard

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz