Verschieben von Dokumenten - Server api

Hallo zusammen,
gibt es in diesem Forum erfahrungen mit server java scripts die ein bestimmtes Verhalten prüfen. Z.B. das löschen von Dokumenten oder das verschieben von Dokumenten.
Im Ziel sollte ermittelt werden, ob ein Move (unabhängig vom Client) gemacht werden darf, oder eben nicht.
Für Erfahrungen und Tipps wäre ich dankbar!
Hans-Jürgen

Hallo Herr Sonnleitner,

ich bin noch nicht ganz sicher, ob ich die Frage korrekt verstanden habe.
In den Javascript Serverevents steht die Server-API zur Verfügung. Standardmässig werden API Calls hier im Kontext des Benutzers ausgeführt, welcher den Server-Event ausgelöst hat (dies kann je nach Rechten auch geändert werden).

Wenn Sie nun ein Dokument potenziell löschen möchten, dann könnten Sie z.B. per API zuerst prüfen, ob der Benutzer auf das Dokument überhaupt Löschrechte hat.

Hier gibt es mehrere Wege. Der einfache Fall ist der API Call dms.CheckPermission, mit dem Sie die Berechtigung erfragen können. Vorteil ist, dass die Antwort recht leicht auszulesen ist.

Alternativ können Sie auch die Metadaten des Objekts erfragen und hier zusätzlich auch die Rechte erhalten. Hier bietet sich der Job dms.GetObjectDetails an. Um auch die Rechte zu erfahren, müssen Sie hier den Parameter Rights= 1 mitsenden. Die Dokumentation ist hier leider recht schwer zu verstehen. Nachteil dieser Variante ist, dass Sie hier die Antwort XML erst einmal auslesen müssen.

Geht dies in die Richtung Ihrer Frage?

Hallo Hr. Wohlfeil,
Vielen Dank für Ihre schnelle Antwort.
Das wäre auch unser Lösungsansatz für das Problem gewesen.

Leider haben wir ein ganz anderes grundsätzlichen Problem bei der Entwicklung von JS-Serverscripts.

Wir haben das Problem, dass beim Debuggen der Breakpoint im Skript nicht zuverlässig funktioniert.
In dem Fall hilft es meistens danach einen 2. Breakpoint zu setzen.
Jedoch wird nach dem 2. bis 3. Durchlauf der Debugger nicht mehr angesprochen bzw.
da keine Log-Einträge über RC.Logger.Error() geschrieben werden, sieht es mehr danach aus als würde das Skript gar nicht mehr ausgeführt werden.
Der Enaio-Client wird auch nicht blockiert.
Ein Neustart des Servers hilft in der Situation nicht.
Erst nach mehreren Stunden funktioniert wieder alles normal.
Haben Sie an der Stelle schon etwas ähnliches beobachtet?

Hallo zusammen, handelt es sich allenfalls um ein Mehrserver-System? Die Events werden dann nicht in jedem Fall vom gleichen Server ausgeführt und tauchen auch nur im Logging/Monitor des jeweils ausführenden Servers auf.

wir haben ein Testsystem dafür verwendet in dem alles auf einem Server läuft,
also kein MultiServer System

Hallo Herr Sonnleitner,

mit dem Debugging meinen Sie das Debugging im Javascript-Server-Event?
Leider habe ich hiermit auch noch keine guten Erfahrungen gemacht.

Mein aktueller Weg ist leider noch klassisch per rc.apps.logger.error("Meine Meldung") und dem Server-Monitor aka. Rettungsring.

Dies hat bei mir bisher funktioniert.

Wenn Sie komplexere Objekte haben, dann können Sie folgendes versuchen:

Per JSON.stringify kann man einige Objekte in String umwandeln.

Ich wünsche Ihnen ein schönes Wochenende
Ulrich Wohlfeil