Questions & Answers

MarsDD
Occasional Observer

ContentCreator (CC) aktueller Nutzer

Hallo Community,

ich bin heute auf ein Problem gestoรŸen und weiss nicht mehr weiter.

Folgende Situation:

Ich mรถchte auf einer "nur" fรผr den CC zugelassenen Seite den aktuellen Nutzer (FirstSpirit User) erhalten um Userspezifische Links zu generieren.

$CMS_SET(set_project, #global.getProject())$

$CMS_SET(set_userService, set_project.getUserService())$

$CMS_SET(set_user, set_userService.getUser())$

Liefert mir im SiteArchitect den richtigen User, jedoch im CC den User mit dem Login-Name: SYSTEM.

Wie ist es mit mรถglich, den aktuell angemeldeten FirstSpirit-User im CC zu identifizieren?

FS-Version: 5.2.515

Viele GrรผรŸe aus Dresden,

Marcel

0 Kudos
11 Replies
ChKo
Elite Observer

Hallo Herr Liebgott,

dies lรคsst sich bislang leider nicht innerhalb des Template-Codes lรถsen, da dieser in der tat vom System-User erzeugt wird.

Allerdings ist es mรถglich mit einem Servlet die Connection zu nutzen um den aktuellen Nutzer zu erfragen:

Als JSP:

<%@page import="de.espirit.firstspirit.access.*" %>

<%@page import="de.espirit.firstspirit.access.project.Project" %>

<%

Connection connection = (Connection) session.getAttribute("connection");

UserService userService = project.getUserService();

User user = userService.getUser();

%>

GruรŸ,

Christopher Kozielski

0 Kudos
MarsDD
Occasional Observer

Hi Christopher,

leider ist das keine Lรถsung fรผr uns - da der Kunde kein JSP im Einsatz hat.

Ein mรถglicher Workaround wรคre theoretisch, ein Script, welches aus dem aktuellen Context den User ans Template zurรผckliefert.

Leider funktioniert dies auch nicht, wie ich es mir erhofft hatte.

//!Beanshell

return context.getUserService().getUser();

$CMS_SET(set_currentUser)$

     $CMS_REnDER(script: "scriptname")$

$CMS_END_SET$

Oder mache ich hier etwas falsch?

Viele GrรผรŸe,

Marcel

0 Kudos

Hallo Marcel,

รผber die Generierung ist dies leider nicht mรถglich (dabei macht es auch keinen unterscheid ob der User-Service im Ausgabe-Kanal direkt oder in einem Script-Template abgefragt wird).

Eine Erklรคrung warum das so ist, findet sich in diesem Thread: https://community.e-spirit.com/message/27502#27502

Allerdings wรคre es mรถglich ein Executable mit der WE-API anzusprechen und den aktuellen Nutzer hierรผber zurรผckzugeben:

top.WE_API.Common.execute('class:MyExecutable', function() {
   // your callback code
});

Das "MyExecutable" (Die du selbst implementierungen musst und in der Module-Xml als public-Component hinzufรผgen musst) ist vom Typ "GuiScriptContext" und enthรคlt den aktuellen Nutzer den CC-Session.

Der Rรผckgabewert muss Serialisierbar und wird als JavaScript-Object zurรผckgegeben, den du im Callback dann nutzen kannst.

GruรŸ,

Christopher

MarsDD
Occasional Observer

Hi Christopher,

das ist schon richtig, die WE-API hatte ich auch im Kopf. Jedoch kann ich dann leider keine FS-Basisfunktionalitรคten wie $CMS_REF()$ mehr drauf ausfรผhren.

Kann ein e-Spirit Kollege hier den entscheidenten Tip geben?

Viele GrรผรŸe,

Marcel

0 Kudos

Hi Marcel,

andere als die von Christoph aufgezeigten Mรถglichkeiten gibt es meines Wissens leider nicht.

Die benutzerabhรคngigen Links kannst du innerhalb der Executable zusammenbauen und zurรผckgeben.

Viele GrรผรŸe

Tim

0 Kudos
MarsDD
Occasional Observer

Hi Tim,

wie macht Ihr das denn imm ContentCreator mit den User -> irgendwas รคndern -> speichern und dann einen Eintrag in die History (z.B.).

Viele GrรผรŸe

Marcel

0 Kudos

Hi Marcel,

du meinst, wie der richtige User fรผr die Versionshistorie ermittelt wird? Wie das im Detail ablรคuft kann ich dir leider nicht sagen, weil ich nicht am Kernprodukt arbeite.

Aber konzeptionell ist es recht einfach: Alles, was du im Ausgabekanal schreibst, wird wรคhrend der Vorschau-Generierung ausgewertet. Die Generierung findet auf dem Server statt und wird von einem technischen User durchgefรผhrt. Der konkrete User, fรผr den die Vorschau generiert wird, ist dabei aktuell nicht zu ermitteln.

Das gilt jedoch nicht fรผr sonstige Aktionen, die vom User im Client angestoรŸen werden. ร„nderungen an Inhalten oder halt auch der Aufruf einer Executable รผber die Web-API geschieht im Namen des Users.

Ich hoffe das war halbwegs verstรคndlich.

Viele GrรผรŸe

Tim

sebastianc
Crownpeak employee

Hallo Marcel,

ist diese Frage noch offen? Benรถtigst du noch weitere Hilfe oder konnte Tim dir bereits weiterhelfen? In diesem Fall wรคre es super, wenn du seine "richtige Antwort" entsprechend markierst.

Solltest du selbst eine Lรถsung gefunden haben, wรคre es toll, wenn du sie hier bereitstellst.

Viele GrรผรŸe,

Sebastian

0 Kudos
MarsDD
Occasional Observer

Hi Sebastian,

leider gibt es aus eurer Sicht keine offizielle Lรถsung fรผr meine Problematik - demnach muss ich es hinnehmen.

Viele GrรผรŸe

Marcel

0 Kudos

Type a product name