Loginproblem mit Business Essentials

Hallo zusammen,

wir setzen Business Essentials ein, da wir einen B2B-Shop haben und nur nach Login der Shop sichtbar sein soll. Leider haben wir dabei ein Problem mit dem Login. Der Support von Shopware hat mir leider nicht weitergeholfen, da der Fehler nicht 100%ig reproduzierbar ist.

Vielleicht kann mir hier jemand einen Tipp geben.

Und zwar äußert sich der Fehler so, dass man sich einloggt und statt dass man auf die Home-Seite weitergeleitet wird, man wieder auf der Loginseite landet. So als hätte man die Seite einfach aktualisiert. Es wird kein Fehler angezeigt. Wenn es ganz schlimm läuft, dann muss man es fünf Mal hintereinander versuchen sich einzuloggen. Oder auch noch häufiger. Toll für die Kunden ist das nicht.

Ich habe mich an den Support gewandt und wurde abgewiesen. Also habe ich mal genauer in den Code vom Business Essentials-Plugin eingearbeitet.

Das Problem bekomme ich mittlerweile auch reproduziert, wenn auch nicht zu 100% zuverlässig. Wenn ich mich im Englischen Sprachshop immer wieder ein- und auslogge, funktioniert der Login irgendwann nicht. Und genau den Fall habe ich untersucht.

Dabei bin ich auf die Funktion „checkShopAccess“ in der Datei Subscriber/FrontendDispatch.php gestoßen. Wenn der Login nicht funktioniert, trifft folgende Bedingung zu:

!$accessAllowed && $request->getRequestUri() == ‚/en/‘

Er versucht nach einem erfolgreichen Login des Kunden, den Kunden auf das „home“ weiterzuleiten. Leider stellt Business Essentials dann fest, dass der Kunde keine Berechtigung dazu hat und leitet wieder zurück auf die Loginseite.
Wenn der Login funktioniert, ist $accessAllowed == true

Ich habe weiter geforscht und gesehen, dass bei dem Request die Kundengruppe des Kunden bei „EK“ bleibt, weswegen der Zugang verweigert wird.

Im Shop Context wird in dem Fall, in dem der Login funktioniert, die Kundengruppe aus der Session geholt. Wenn es nicht klappt, dann muss er die Kundengruppe immer aus dem Shop holen, die dann folglich nicht stimmt.

Das Ergebnis ist, dass man auf den PrivateLogin-Controller weitergeleitet wird und man keine Info bezüglich des Problems erhält.

Da es meistens funktioniert und nur manchmal nicht, gehe ich hier von einer race condition aus.

Im Fehlerfall ist also zum Zeitpunkt der Prüfung „sUserGroup“ in der Session nicht gesetzt.
Ist es irgendwie möglich, dass der Wert der Session in manchen Fällen zu spät gesetzt wird?

Was ich jetzt suche ist ein sicherer Code, den ich in der Funktion „checkShopAccess“ im Code von Business Essentials einfügen kann, der vor dem Holen des Shop Context dafür sorgt, dass der benötigte Wert in der Session richtig gesetzt ist, falls er gesetzt werden darf.

Kennt sich da jemand aus?
Von Seiten Shopware Support, bekomme ich hier leider keine Hilfe.

Viele Grüße,
Conny

  1. Welche Shopware Version?
  2. Welche PHP-Version?
  3. Welcher Browser oder Mobilgerät?

SW 5.6.9
PHP 7.4.18
Firefox 88.0.1 (64-Bit)

Edit: Könnte es irgendetwas mit der PHP-Session zu tun haben? Dass die nach dem Login nicht richtig gesetzt wird? Ich suche gerade den Code in Shopware, der die Sessionvariablen setzt, aber ich habe ihn noch nicht gefunden.

Das Session Cookie könnte man im Browser ggf. noch überprüfen => „session-1“

Ist man noch nicht eingeloggt ist es eine lange Session ID, ist man eingeloggt eine kurze Session-ID.

Danke für den Tipp. Bei mir sind die aber nicht unterschiedlich lang, keine Ahung :smiley:

ABER: Ich glaube, ich habe das Problem gefunden. Es scheint an ner individuellen Anpassung zu liegen. Wenn ich die wegnehme, dann kann ich 5 Minuten lang versuchen, dass das Problem wieder auftritt und es bleibt weg. Hoffen wir mal, dass es wirklich so ist :sweat_smile:
Jetzt muss ich nur noch rausfinden, was genau das Problem ist, weil die Anpassung trotzdem benötigt wird…

Dann scheint wirklich der Login-Prozess zu hängen. Ansonsten ist auch mir so ein Verhalten nicht bekannt.

Hallo Cornelia,
wir haben auch ein merkwürdiges Problem.
Ich habe das Private Shopping für eine Kundengruppe eingerichtet, das gleichzeitig ein Subshop mit Subdomaine hat. Die Kunden sollen sich erst mit automatischer Freischaltung registrieren um den Shop zu sehen. Registrierung funktioniert, ich komme in den Shop. Dann logge ich mich wieder aus und will wieder rein. Kommt http 500 error, diese Seite funktioniert nicht.

Im Fehlerprotokoll steht sowas [Thu Aug 25 10:49:42.109089 2022] [proxy_fcgi:error] [pid 9611] [client 5.147.164.29:65061] AH01071: Got error ‚PHP message: PHP Fatal error: Uncaught TypeError: Return value of SwagBusinessEssentials\Components\PrivateShopping\LoginHelper::getRedirectLoginConfig() must be of the type string, boolean returned in /var/www/vhosts/demoshop.fleischhacker.biz/custom/plugins/SwagBusinessEssentials/Components/PrivateShopping/LoginHelper.php:194\nStack trace:\n#0 /var/www/vhosts/demoshop.fleischhacker.biz/custom/plugins/SwagBusinessEssentials/Components/PrivateShopping/LoginHelper.php(171): SwagBusinessEssentials\Components\PrivateShopping\LoginHelper->getRedirectLoginConfig(‚803‘)\n#1 /var/www/vhosts/demoshop.fleischhacker.biz/custom/plugins/SwagBusinessEssentials/Controller/Frontend/PrivateLogin.php(122): SwagBusinessEssentials\Components\PrivateShopping\LoginHelper->getRedirectUrl()\n#2 /var/www/vhosts/demoshop.fleischhacker.biz/engine/Library/Enlight/Controller/Action.php(192): SwagBusinessEssentials\Controller\Frontend\PrivateLogin->redirectLoginAction()\n#3 /var/www/vhosts/demoshop.fleischhacker.biz/engine/Library/Enligh…\n‘, referer: Welcome to the IAEA Onlineshop | IAEA

Hast du eine Idee? Vielen lieben Dank.

Hallo Birgit,

direkt habe ich keine Idee, was es sein könnte. Ich würde aber zuerst einmal in dem Kundenacocunt im Backend prüfen, ob die Kundengruppe und der Shop richtig sind. Und dann mal die entsprechenden Einstellungen von Business Essentials prüfen und vielleicht mal neu abspeichern.
Wenn das nicht hilft, würde mich mal mit anderen Kundengruppen für den Kunden testen und schauen, was passiert. Und im nächsten Schritt würde ich mal mit den Einstellungen von Business Essentials rumspielen, um es einzugrenzen.

Hallo Cornelia, vielen Dank für deine Tipps. Ich versuche mal weiter. Leider ist die Shopware Doku auch nicht so wirklich hilfreich. LG aus Schwerte Birgit

Welche PHP-Version ist denn aktiv?