Autorenrechte für Haupt-doc temporär vergeben

  • Hallo zusammen,


    auf ein Haupt-doc hat ein Benutzer A nur Leserechte. Auf ein Antwort-Doc hat Benutzer A Vollzugriff.
    Im Haupt-doc sind Feldinhalte des Antwort-doc mittels LS eingebunden und stellen dort mehr oder weniger den Status des Antwort-doc dar.
    Die Einbindung dieser Feldinhalte erfolgt nach dem Ereignis Queryclose.
    Problem:
    Wenn Benutzer A das Haupt-doc verläßt und damit das Ereignis Queryclose anstößt, kommt natürlich eine Fehlermeldung, da Benutzer A ja nur Leserechte hat.
    Lsg-Ansatz: Ich gebe dem Benutzer A für das Haupt-doc temporär Autorenrechte, damit die Werte aus dem Antwort-Doc ins Haupt-doc geschrieben werden können. Das soll alles im Ereignis Queryclose passieren.
    Geht das (hat bislang nicht gefunzt), bzw. gibt es eine elegantere Alternative?


    Danke!

    • Offizieller Beitrag

    lasse die Änderungen am Hauptdokument vom Dimino ausfüren. Dafür erstellst Du einen Agenten, der getriggert wird auf das Ereignis "Nachdem Dokument erstellt oder geändert wurde".


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

    • Offizieller Beitrag

    entweder mit DocumentContext oder mit UnprocessedDocuments. findest Du beides in der NotesSession-Klasse.


    Gruß
    Dirk

    • Offizieller Beitrag
    Zitat

    Und warum kann ich die Autorenrechte nicht temporär vergeben?

    kannst Du, aber wie taurec es beschrieben hat nur durch einen User, der schon Schreibrechte auf dieses Dokument hat.
    Da der User, der die Änderung durchführen will zu diesem Zeitpunkt keine Schreibrechte auf das Hauptdokument hat, müssen die Rechte erst von einem berechtigten User (der Domino liegt da nahe) angepasst werden und nach der Änderung wieder rückgängig gemacht werden. Da der Domino das Dokument eh im Zugriff hat, wäre es viel einfacher und auch sicherer, dass die rechte nicht verbogen werden sondern der Domino gleich die Änderungen vornimmt.


    Das temp. freigeben von Autorenrechten halte ich für ein umschiffen der Sicherheitsregeln von Notes/Domino und nicht besonders praktikabel. Ein User kann z. B. mit dem Debugger das Script abbrechen (oder das Script bricht durch einen Fehler ab) und dann werden die Rechte auf das Hauptdokument auch nicht mehr zurückgesetzt.


    Gruß
    Dirk

  • Jetzt gehts dahin....


    ... sondern der Domino gleich die Änderungen vornimmt.


    Wie soll ich mir das vorstellen? Ein Aufrufen des Agenten mittels Schaltfläche im Antwortdokument (wäre aus Benutzerführungssicht möglich)? Zugriff auf die Daten mittels Domino --> was muss da anders programmiert werden? Betrete da jetzt schon irgendwie Neuland....


    Hoffe, ich bekomme jetzt keine Hiebe wegen Unkenntnis irgendwelcher Dinge....

    • Offizieller Beitrag

    keine Schaltfläche, sondern einen Agenten der wie unten beschrieben getriggert wird, damit läuft der Agent an, sobald ein Dokument geänder oder neu erstellt wurde.


    Der Agent kann (siehe unten) auf das geänderte Dokument zugreifen und dann das Elterndokument holen (NotesDocument.ParentDocumentUNID, NotesSession.GetDocumentByUNID). Schau Dir mal in der Hilfe zu den erwähnten Eigenschaften/Methoden die Beispiele an.


    Gruß
    Dirk

  • Jetzt steht da in meinem schlauen Buch, dass Agenten mit dem Trigger "Wenn ein Dokument geändert oder neu erstellt wurde" erst mit Zeitverzögerung gestartet werden (Einträge in der Notes.ini des Servers). Das wäre nicht gut, denn die Einträge sollen ja sofort aktualisiert werden. Was hilft es dem Benutzer, wenn er erst 15 Minuten später den aktuellen Eintrag in der Ansicht sieht.....

    • Offizieller Beitrag

    der Start des Agenten dauert keine 15 Minuten. Wenn es mal lange dauert, dann dauert es mal eine Minute.


    Aber mal ein anderer Ansatz. Falls Du dieses Feld aus dem Hauptdokument nicht in einer Ansicht anzeigen willst, dann mach es doch berechnet zur Anzeige oder berechneter Text und berechne den Status der Antwortdokumente bei jedem Öffnen und Refresh neu.


    Gruß
    Dirk

    • Offizieller Beitrag

    Mit
    status = notesAgent.RunOnServer( [ noteID$ ] )
    könntest Du den Agenten im PostSave auf dem Server anschubsen.


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

  • Lösung = Neustrukturierung (leider):


    Es gibt ein Haupt-doc, das nur den jeweiligen Status der Antwort-Docs trägt. Auf dieses haben alle Vollzugriff. Die Antwort-Docs tragen Leser- und Autoren-Felder.
    Das Haupt-doc holt sich beim Queryclose alle Infos aus den Antwort-Docs und trägt diese ein.
    Alle beteiligten Benutzer haben zumindest Lese-Rechte auf die Antwort-Docs.


    Danke für Eure Hilfe!