Zum Hauptinhalt springen

Zugriff & Erweiterung

ConnectorSessionService

Der ConnectorSessionService ist der zentrale Zugriffspunkt auf die ConnectorSession im PHP-Code. Er kann per Dependency Injection bezogen werden.

MethodeRückgabeBeschreibung
has()boolPrüft ob aktuell eine aktive Session existiert
get()ConnectorSession|nullGibt die aktuelle Session zurück, oder null wenn keine vorhanden
set(ConnectorSession)voidSpeichert eine Session (überschreibt eine ggf. vorhandene)
clear()voidLöscht die aktuelle Session
putAdditionalField(string $key, mixed $value)voidFügt ein additionalField zur aktuellen Session hinzu (erstellt ggf. eine leere Session)

Beispiel:

public function __construct(
private readonly ConnectorSessionService $connectorSessionService
) {}

public function doSomething(): void
{
if (!$this->connectorSessionService->has()) {
return;
}

$session = $this->connectorSessionService->get();

$hookUrl = $session->getHookUrl();
$systemType = $session->getSystemType(); // ConnectorSystemType::OCI oder ::cXML
}

additionalFields erweitern

additionalFields sind frei definierbare Key-Value-Paare, die aus der Transmission übernommen werden. Sie können jederzeit über den ConnectorSessionService ergänzt werden – am sinnvollsten im ConnectorSessionLoginEvent-Listener:

use AgiqonConnector\Connector\Event\ConnectorSessionLoginEvent;
use AgiqonConnector\Connector\Service\ConnectorSessionService;
use Symfony\Component\EventDispatcher\Attribute\AsEventListener;

#[AsEventListener(event: ConnectorSessionLoginEvent::EVENT_NAME)]
final class MySessionLoginListener
{
public function __construct(
private readonly ConnectorSessionService $connectorSessionService
) {}

public function __invoke(ConnectorSessionLoginEvent $event): void
{
// Eigenes Feld zur Session hinzufügen
$this->connectorSessionService->putAdditionalField(
'myCustomKey',
'myCustomValue'
);
}
}

Das Feld ist anschließend über $session->getAdditionalField('myCustomKey') abrufbar.


Zugriff in Twig-Templates

Sobald eine Connector-Session aktiv ist, stellt der StorefrontSessionSubscriber die Session als Template-Variable zur Verfügung:

VariableVerfügbar auf
agiqonConnectorSessionHeader, Warenkorb, Offcanvas-Warenkorb, Listing, Produktseite
agiqonConnectorIsCxmlInspectHeader
agiqonConnectorShowAccountHeader (nur OCI)
agiqonConnectorPunchoutLevel2Listing, Produktseite

Beispiel in Twig:

{% if agiqonConnectorSession %}
<p>Aktives System: {{ agiqonConnectorSession.system }}</p>
<p>Systemtyp: {{ agiqonConnectorSession.systemType.value }}</p>
{% endif %}

Events

Die Session feuert Events an definierten Punkten im Lebenszyklus. Diese können genutzt werden um eigene Logik einzuhängen.

Event-KlasseEvent-NameWann
ConnectorSessionLoginEventagiqon_connector.connector_session.loginNach erfolgreichem Login
ConnectorSessionLogoutEventagiqon_connector.connector_session.logoutBeim Logout (generisch)
OciSessionLogoutEventagiqon_connector.connector_session.logoutBeim Logout einer OCI-Session
CxmlSessionLogoutEventagiqon_connector.connector_session.logoutBeim Logout einer cXML-Session
info

OciSessionLogoutEvent und CxmlSessionLogoutEvent erben von ConnectorSessionLogoutEvent und werden unter demselben Event-Namen gefeuert. Ein Listener auf ConnectorSessionLogoutEvent erhält alle Logout-Events; ein Listener auf OciSessionLogoutEvent nur die OCI-spezifischen.

Alle Events stellen bereit: getConnectorSession(), getSalesChannelContext(), getRequest(). Das Logout-Event liefert zusätzlich isTransferred(): bool.


Vorbefüllte additionalFields

Beim Login befüllt der Connector additionalFields automatisch mit protokollspezifischen Daten. Diese stehen anschließend in der gesamten Session zur Verfügung.

OCI

Alle GET- oder POST-Parameter des Login-Requests werden – nach Kleinschreibung der Keys – in additionalFields übertragen. Ausgenommen sind die konfigurierten Login-Parameter sowie function, da diese für den Login-Prozess selbst verbraucht werden:

Ausgeschlossene ParameterBeschreibung
varUserName (konfiguriert)Benutzername
varPassword (konfiguriert)Passwort
varToken (konfiguriert)Token
varUrl (konfiguriert)Hook-URL
functionOCI-Funktionsparameter

Alle anderen Parameter des Procurement-Systems (z.B. Sprache, Kostenstelle, Bestellnummer) landen direkt in additionalFields und können über $session->getAdditionalField('paramName') abgerufen werden.

cXML

Beim cXML-Login werden folgende Felder automatisch befüllt:

Feste Felder:

KeyTypQuelle
buyerCookiestringPunchOutSetupRequest > BuyerCookie
operationstringAttribut @operation am PunchOutSetupRequest (create, edit, inspect)
cxmlStringstringVollständiger Login-XML-String
isPunchoutLevel2boolSystem-Konfiguration
systemAutoIncrementintSystem-Nummer aus der Login-URL

Extrinsic User-Identity-Felder (nur wenn im PunchOutSetupRequest vorhanden):

Key
UserEmail
FirstName
LastName
UserPrintableName
UserFullName
UniqueName
UniqueUsername
User
UserId
UserPhoneNumber
PhoneNumber