Shopware 5.2 Plugin springt immer auf Backend Login / Backend Login umgehen

Hallo, 

ich hatte für einen Bekannten ein Modul für einen Kundendatenimport über eine CSV geschrieben, der die Daten nach einigen Manipulationen über die REST Api anlegt. Unter Shopwarre 5.x funktionierte dies auch einwandfrei, es gab kein backend und nichts. Ich hatte das ganze als Modul gemacht und es lies sich auch als lokales backend Plugin einbinden und aktualisieren usw… Da ich den backend Login nicht brauchte, hatte ich dies eingebaut:

public function init() {
        Shopware()->Plugins()->Backend()->Auth()->setNoAuth());
       Shopware()->Plugins()->Controller()->ViewRenderer()->setNoRender();

    }

 

Nutze ich das gleiche Modul unter Shopware 5.2 bekomme ich folgenden Fehler:

The provided CSRF-Token is invalid. If you’re sure that the request should be valid, the called controller action needs to be whitelisted using the CSRFWhitelistAware interface. in engine/Shopware/Components/CSRFTokenValidator.php on line 108

 

Ändere ich dies nach Anleitung die Bootstrap.php ab:

use Shopware\Components\CSRFWhitelistAware;
class Shopware_Plugins_Backend_MyCustomerImport_Bootstrap extends Shopware_Components_Plugin_Bootstrap implements CSRFWhitelistAware{

    public function getWhitelistedCSRFActions() {

        return [
            ‘MyCustomerImport’
        ];
    }

Springt er mir auf die Startseite des Shopbackend, führt aber nichts mehr aus. Wenn ich den CSRF Check in der Config ausschalte, läuft alles Problemlos

 

Was muss ich hier tun oder ändern, damit hier wieder mein Plugin funktioniert und ich nicht mehr auf den backend Login zurückfalle. Noch zu sagen ist, dass der Import über einen webrequest angestoßen wird via curl

Die Dokumentation zu CSRF-Implementierung findest du hier: CSRF Protection

Da solltest du alles notwendige finden.

Hallo,

an diese Anleitung habe ich mich gehalten, die Implementation scheint auch erfolgreich zu sein, da zumindest die Fehler nicht mehr auftreten, was allerdings nicht funktioniert ist 

public function init() {
        Shopware()->Plugins()->Backend()->Auth()->setNoAuth());
       Shopware()->Plugins()->Controller()->ViewRenderer()->setNoRender();

    }

 

hier springt er mir dann immer auf den backend Login, den ich ja so eigentlich umgehen wollte und auch muss, was muss ich machen, damit ich per curl das ganze wieder ohne Backend Login starten kann?

Hi,

schau dir mal das Cron Plugin im Core an unter engine/Shopware/Plugins/Default/Core/Cron. Hier haben wir ja eine ähnliche Problematik.
Sollte funktionieren.

VG,

Marcel

1 Like

Vielen Dank, hat so funktioniert, ich hatte hier in der Whitelist nicht index eingetragen, sondern MyCustomerImport. Irgendwie hab ich da den Wald vor lauter Bäumen nicht mehr gesehen