ich nutze das GraphQL Base Modul und möchte die Authentication Klasse (source/modules/oe/graphql-base/src/Service/Authentication.php) des Moduls überschreiben.
class Authentication extends Authentication_parent
und die funktion isLogged() versucht zu überschreiben:
/**
* @throws InvalidToken
*/
public function isLogged(): bool
{
$logger = Registry::getLogger();
$logger->warning('TEST ...');
return parent::isLogged();
}
Die Funktion isLogged() in der Parent Klasse des GraphQL Moduls wird aufgerufen, dort kann ich via xdebug einen Breakpoint setzen der aufgerufen wird. Die Funktion in meiner Klasse wird hingegen nicht aufgerufen. Was mache ich hier falsch? Würde mich über Hinweise freuen.
Noch kurz zu meinem Modul:
Das Modul ist im Backend als aktiv sichtbar, die Config ist mit vendor/bin/oe-console oe:module:install-configuration gesetzt. Habe darin einen “BeforeAuthorization” EventSubscriber implementiert, der funktioniert einwandfrei.
erster Tipp von mir für Developer mit technischen Background und Detailfragen lohnt es sich bei Slack beizutreten. Du findest den Slack Channel unter Community (DE) • OXIDforge dort hättest auch direkten Kontakt zu Personen die GraphQL Module für OXID entworfen.
Zweitens für GraphQL funktioniert diese Form von Überladung nach OXID eShop Dokumentation wahrscheinlich nicht. Zum Verständnis bei GraphQL handelt es sich um eine Modulimplementation und dem OXID eShop Framework wird die Klasse Authentication welche Du überladen möchtest nicht bekannt gemacht in der Form wie Du Sie erweitern möchtest, dies verrät ein Blick in die metadata.php vom GraphQL Basemodul.
Ich hoffe ich konnte Dir soweit aufzeigen wo Du ansetzen könntest und Du Deinem Ziel weiterkommst um die Authentifikationsklasse Methode Deinen Wünschen entsprechend zu modifizieren.
habe ganz vielen Dank für Deine schnelle und vor Allem ausführliche Antwort und die ganzen Hinweise! Bin dem Slack Channel schon beigetreten.
Da wäre ich von allein nicht drauf gekommen dass die Klasse in der metadata.php des zu erweiternden Moduls gelistet sein muss um sie über den Weg erweitern zu können. Guter Hinweis.
Die Symfony Services sind mir bekannter, damit komme ich zurecht. Ich werde das die Tage mal ausprobieren und hier an dieser Stelle nochmal Feedback geben. Vielleicht stößt ja nochmal jemand anderes auf diesen Eintrag. In Zukunft werde ich die Developer Fragen dann im Slack Channel stellen.
Bezüglich GraphQL weil es sehr Neu ist - wird hier im Forum sehr wenig bis gar keine Erfahrung vorhanden sein. Manche Fragen gehen so weit ins Detail, dass dies schon strukturell ist und nur ein Entwickler beantworten kann welcher am Design Prozess der GraphQL für OXID beteiligt war. Dies war mein Punkt.
Gerne kannst Du hier über Deinen Erfahrungswert berichten, dafür ist das Forum da. Dies hilft letztendlich allen weiter die später vor gleicher Anforderung stehen sollten.
jetzt habe ich doch nochmal eine Frage, die vielleicht auch allgemein genug ist um im Forum erwähnt zu werden. Das GraphQL ist ja auch ein Modul und nicht Teil des Shop Cores selbst. In dem von Dir genannten Link Service Container — OXID eShop developer documentation 6.3.0 documentation geht es ja darum Shop Services zu ersetzen über die configurable_services.yaml.
Wäre denn in meinem Fall der Authentication Service des graphql-base-moduls auch als “system services” bzw. “eshop core service” zu verstehen, auch wenn es ein service eines Moduls (ausserhalb des cores ) ist?
dies müsste ich selber ausprobieren, würde aber vermuten das über configurable_services.yaml überschreiben musst. Weil ich die Dokumentation so verstehe, dass eine Variante um eigene Services anzulegen und eine Variante um bestehende Services zu überschreiben.