Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Alexis am 22.09.04 - 13:58:37
-
Hallo Forum,
kann ich mit folgender Zeile aus einem Antwortdokument die Autorenliste verändern?
parentDoc.Authors=userName.Canonical
Zweck ist es, in dem Script im Mutterdokument weitere Einträge vorzunehmen, die natürlich Autorenrechte erfordern.
Alexis
-
Wenn das funktionieren sollte, dann hättest Du einen schweren Sciherheitsbug gefunden, denn so würde man ja den Schreibschutz des Parentdoc umgehen können.
-
Das war auch mein erster Gedanke, Jens - aber vielleicht steht in username.Canonical ja der Name eines zukünftigen Bearbeiters, der jetzt die Berechtigung bekommen soll, Response- und ParentDoc zu bearbeiten ?
Bernhard
-
Hallo Berhard,
exakt so ist es!
Alexis
-
kann ich mit folgender Zeile aus einem Antwortdokument die Autorenliste verändern?
parentDoc.Authors=userName.Canonical
Also, so geht es auf jeden Fall, wenn Du parentDoc vorher instantiiert hast:
- Wenn IsResponse, dann
- Set parentDoc = NotesDatabase.GetDocumentByUNID (ParentDocumentUNID)
HTH,
Bernhard
-
Hallo Bernhard,
der Code sieht (naturgegeben) bei mir anders aus:
userAbbr=userName.Abbreviated
key=Source.FieldGetText("ParentID")
Set view=db.GetView("ParentDocID")
Set parentDoc=view.GetDocumentbyKey(Key)
parentDoc.Autoren=source.FieldGetText("AssignedTo")
Call parentDoc.Save(True,False)
Im Feld Autoren steht auch wirklich der Name, jedoch nicht in kanonischer(?) Form. In der ACL ist in der Autorengruppe der User ebenfalls zu finden. Dennoch kommt die Fehlermeldung, nicht autorisiert zu sein, das Parentdokument zu ändern.
Wo ist der Haken?
Alexis
-
Da ist die Frage, was steht denn bei Dir im Feld "AssignedTo" ? Offensichtlich kein kanonischer Name - dann klappt das auch nicht. Du müsstest doch noch ein anderes Feld haben, in dem der kanonische Name (erforderlich für ein Autorenfeld) zu finden ist ?
Weiterhin:
userAbbr=userName.Abbreviated
Wo wird das gebraucht ?
Set view=db.GetView("ParentDocID")
Wo prüfst Du, ob diese View instantiiert werden kann ?
Set parentDoc=view.GetDocumentbyKey(Key)
Wo prüfst Du, ob dieses Dokumenent instantiiert werden kann ? Was ist, wenn jemand das ParnetDoc gelöscht hat ? -> Run-time error !
HTH,
Bernhard
-
Ok, so macht es natürlich Sinn, wenn das nicht der eigene Name ist, sorry für die Fehlinterpretation. Ansonsten gibt es zu Bernhards Ausführungen nichts hinzuzufügen
-
Hallo,
den berechtigten Anmerkungen von Bernhard widme ich mich später.
Zunächst stehe ich vor der Fehlermeldung:
Notes error: You cannot update or delete the document(s) since you are not listed as an allowable Author for this document.
Im betreffenden Dokument existiert das Feld - Typ: Names, editierbar, Allow multible values - "Autoren" korrekt mit dem Usernamen in kanonischem Format, gleicher User ist in der ACL in einer Autorengruppe ebenfalls aufgeführt.
Wo kann der Grund für die fehlende Berechtigung liegen?
Alexis
-
Wenn der Typ Names ist, dann spielt das Feld für den Autorenzugriff keine Rolle.
Bernhard
-
Einerseits gilt das, was Bernhard schon sagt, das Feld muss vom Typ "Author" sein, andererseits, stehen im Dokument selber oder in der Maske noch irgendwelche Zugriffsbeschränkungen? Tab mit dem Schlüssel unter den Dok-Eigenschaften
-
Danke für den Hinweis auf meine ESELEI.
Damit klappt's, den Hinweisen von Bernhard werde ich noch nachgehen.
Merci
Alexis