Domino 9 und frühere Versionen > ND7: Entwicklung
Wie kann ich aktuellen Rechte auf ein Dokument feststellen
Hatschi:
Hallo Peter,
auf Knopfdruck sollen ein oder mehrere Dokumente exportiert werden. Es sollen also sowohl markierte Dokumente aus einer Ansicht heraus exportiert werden, also auch einzeln für das geöffnete Dokument.
Anschließend wird das Zielsystem von Notes aus gestartet und die exportierten Daten werden übergeben. Wenn dann auf der Zielseite die Datenübernahme bestätigt wurden, soll das Zielsystem dies per COM in die Dokumente nach Notes als Kennung schreiben. Das funktioniert so weit auch alles mit meinen Manager-Rechten, aber wenn das auf die Allgemeinheit losgelassen wird, dann wird der Export noch funktionieren, aber die Rückmeldung vom Zielsystem wird auf die Nase fallen. Und deshalb möchte ich schon vor dem Export wissen, ob der User das Dokument ändern darf.
Die Anwender sind als Editoren in der ACL eingetragen. Und es gibt 4 Felder vom Typ Author.
RunOnServer würde nicht funktionieren, weil das zurückschreiben ja über COM erfolgt.
Da bleibt mir wohl nichts als die Autoren abzuklappern. Ich befürchte da aber auf Gruppen und Rollen zu stoßen . . .
Bernd
Tode:
Erst mal: Wenn die User alle Editoren sind, dann brauchst Du Dich doch darum gar nicht kümmern, dann darf jeder jedes Dokument schreiben...
Wenn Du aber das Ding "sicher" haben willst (also mit Autoren), dann würde ich das mit "Rückmelde- Dokumenten" machen... Die werden von Deinem export erstellt und dann entweder als Antwortdokumente auf das Original- dokument angehängt (kann man im dok ja in einer embedded view oder über ein berechnet zur Anzeige Feld anzeigen lassen), oder aber per Serverbasiertem Agenten die Info aus den Rückmeldungen wieder in die Original- Dokumente zurückgeschrieben (Rückmeldedokumente dann löschen nach erfolgter verarbeitung)
Gruss
Tode
Hatschi:
Hallo Torsten,
sehe ich die Rechte falsch?
Die Anwender sind als Editoren in der ACL aufgeführt. Die Dokumente haben Felder vom Typ Author. Deshalb darf jeder das Dokument lesen.
In eins von den Autorenfeldern ist der Ersteller eingetragen. Er darf damit sein Dokument auch bearbeiten. Die anderen sind darüber ausgesperrt.
Deine Idee mit eigenständigen Antwortdokumenten wäre mit weiterem Programmieraufwand (Ansichten und Agenten) möglich. Aber ein neues Dokument als Antwortdokument möchte ich ungern erstellen, weil ja lediglich ein Feld übergeben wird indem drin steht das die Daten übernommen wurden.
Der Aufwand müsste gar nicht erst betrieben werden, wenn ich eine Funktion hätte in der Art AutorenRechte(doc, session.username) as boolean. Ich werde mich einmal daran versuchen und gucken wie weit ich komme.
Bernd
Peter Klett:
--- Zitat von: Hatschi am 13.04.11 - 15:45:11 ---sehe ich die Rechte falsch?
--- Ende Zitat ---
Ja
--- Zitat von: Hatschi am 13.04.11 - 15:45:11 ---Die Anwender sind als Editoren in der ACL aufgeführt.
--- Ende Zitat ---
Damit können sie JEDES Dokument in der Datenbank bearbeiten, das sie sehen können
--- Zitat von: Hatschi am 13.04.11 - 15:45:11 ---Die Dokumente haben Felder vom Typ Author. Deshalb darf jeder das Dokument lesen.
--- Ende Zitat ---
Solange die Dokumente nur Autorenfelder haben, kann JEDER die Dokumente in der Datenbank lesen, der mindestens Lesezugriff auf die Datenbank hat. Um den Lesezugriff einzuschränken, brauchst Du Leserfelder
--- Zitat von: Hatschi am 13.04.11 - 15:45:11 ---In eins von den Autorenfeldern ist der Ersteller eingetragen. Er darf damit sein Dokument auch bearbeiten. Die anderen sind darüber ausgesperrt.
--- Ende Zitat ---
Nein, als Editor in der ACL nicht (s.o.).
Du solltest Dich mit den Zugriffsmechanismen in Notes auseinandersetzen ...
Hatschi:
Mit folgendem Rumpf möchte ich starten:
Function AutorenRechte (doc , AnwenderName As String) As Boolean
'Diese Funktion liefert true zurück, wenn der Anwender Autorenrechte hat
Dim Anwender As notesname
Dim test As Variant
Set Anwender=New notesname(Anwendername)
'Alle Items nach Autorenfelder durchsuchen
Forall feld In doc.items
If feld.isAuthors Then
'es wurde ein Autorenfeld gefunden, prüfen ob der Anwender in der Liste auftaucht
End If
End Forall
End Function
Im Debugger habe ich mir nun ein paar Feldinhalte der Autorenfelder anzeigen lassen und bin dabei auch auf Rollen gestossen. Das wird dann noch ein wenig Arbeit die aufzudröseln.
Bernd
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln