Domino 9 und frühere Versionen > ND7: Entwicklung
Wie kann ich aktuellen Rechte auf ein Dokument feststellen
Peter Klett:
Das wird nicht reichen, habe ich aber schon oben erwähnt.
Der Benutzer kann in 100 Autorenfeldern stehen. Wenn er nur Leser in der Datenbank ist, nützt ihm das nichts.
Ist er Editor, kann er das Dokument auch bearbeiten, wenn er in keinem Autorenfeld steht. Du wirst wohl mit der ACL anfangen müssen ..
Hatschi:
Hallo Peter,
es soll ja auch jeder die Dokumente sehen, aber nur seine eigenen und bestimmte andere bearbeiten dürfen.
Auf den Dokumenten gibt es nur Autorenfelder, aber keine Leserfelder. Tatsache ist aber das andere meine Dokumente nicht bearbeiten könnnen. Dann müsste ja da noch ein anderer Mechanismus greifen, damit das so funktioniert wie von mit geschildert.
Hmmm, da muss ich mir das Rechtesystem von Notes in der Tat einmal ansehen.
Bernd
Tode:
Es ist definitiv so: Autorenfelder sind nur für Autoren gültig, Editoren kratzen die gar nicht... leserfelder brauchst Du für Dein Szenario keine, aber alle Deine User MÜSSEN Autor sein.
Der Rumpf is schon mal ok...
Trotzdem ist das ein Haufen Arbeit.
ich habe grade mal auf der Basis von Peters früherer Antwort was ausprobiert:
Wenn Du in der Datenbank Document Locking aktivierst (Du brauchst einen Admin- Server in der ACL),
dann kannst Du rausfinden, ob ein User ein Dokument bearbeiten darf oder nicht, indem Du versuchst das Dokument zu sperren. Also so:
On error goto ErrorLock
call doc.Lock(ses.UserName,False)
On error goto wohinauchimmerdeinerrorhandlingzeigt
Exit Sub
ErrorLock:
'- Vielleicht protokollieren, oder dem benutzer melden, dass da was schief geht
resume NextDoc '- falls Du die verarbeitung für andere Dokumente trotz des Fehlers fortfahren willst, NextDoc ist dann die Sprungmarke, wo Du Dir Dein nächstes doc holst, typischerweise vor einer Zeile wie:
set doc = dc.getNextDocument(doc)
oder
set doc = dc.GetNthDocument(i) (hoffentlich eher nicht)
oder
...
HTH
Tode
Peter Klett:
Ja, nämlich, dass die Benutzer Autor in der ACL sind, und nicht Editor, wie von Dir geschrieben.
Falls sie trotz Editorrechten die Dokumente nicht in den Bearbeiten-Modus versetzen können, ist da ein separater Mechanismus eingebaut (mache ich auch gerne, schau mal in das Event QueryModeChange), der aber nicht dazu führt, dass die Benutzer per Aktion das Dokument nicht ändern könnten.
Das kannst Du ganz einfach testen, indem Du eine Schaltfläche baust, die ein Dokument verändert. Gibt es eine Fehlermeldung von Notes, ist der User nur Autor.
Hatschi:
Hallo Torsten,
mit einem On error goto habe ich auch schon geliebäugelt. Ich schreibe einfach etwas in ein Dummyfeld und wenn es zu einem Fehler beim Speichern kommt, breche ich die Bearbeitung gesittet ab.
Das wäre eine quick and dirty Lösung. Muss ich mir noch überlegen ob ich die so verwende. Der elegantere Weg wäre natürlich eine Abfrage . . .
Hallo Peter,
danke für deine hartnäckigen Kommentare zu den Rechten! Ich muss mich verklickt/verguckt/verschrieben haben. Die Anwender sind auf der Datenbank tatsächlich als Autoren geführt, und nicht wie von mit beschrieben als Editoren. Entschuldigung für die unnötige Verwirrung. Trotzdem werde ich das als Aufhänger nehmen und mir die Rechte anzusehen.
Vielen Dank für eure Hilfe und für heute erst einmal einen schönen Feierabend.
Bernd
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln