Wie kann ich den EmailValidator (isValid) bzw. den Email-Duplicate-Check deaktivieren

Hallo zusammen,

ich baue an einem Shop (SW5.6.6 CE), bei dem es möglich sein soll, dass verschiedene Kunden von ein und dem selben Betreuer betreut werden und daher auch die selbe Email-Adresse im jeweiligen Kundendatensatz aufweisen müssen können.

Bsp. Customer 1

“number”: “CoID1”,
“email”: “test@test.net”  => Create Customer über REST-API funktioniert wunderbar.

Bsp. Customer 2

“number”: “CoID2”,
“email”: “test@test.net” => Create Customer über REST-API wird abgelehnt mit folgendem Fehler:

{
    “success”: false,
    “message”: “Validation error”,
    “errors”: [
        “email: Diese E-Mail-Adresse ist bereits registriert”
    ]
}

Ich habe nun diese Duplikat-Kontrolle im Quellcode gesucht, aber nicht gefunden. An welcher Stelle lässt die sich deaktivieren?

Ich suche händeringend nach einer Möglichkeit, da dies ein KO-Kriterium für meine Shopware-Instanz wäre.

Beste Grüße

Julian

 

So,

habe es nun leider so machen müssen, dass ich die Dateien

/Shopware5/SW5.5/engine/Shopware/Bundle/AccountBundle/Constraint/CustomerEmailValidator.php

an der Stelle

/*if (!$this->isFastLogin($constraint) && $this->isExistingEmail($email, $shop, $customerId)) {
            $this->addError($this->getSnippet(self::SNIPPET_MAIL_DUPLICATE));
        }*/

und

/Shopware5/SW5.5/engine/Shopware/Controllers/Backend/Customer.php

an der Stelle

//if (empty($customer) && $emailValidator->isValid($mail)) {
           $this->Response()->setContent(1);
// } else {
// $this->Response()->setContent('');
// }

  

auskommentiert habe.

Somit funktioniert zumindest mein Use-Case.

Das ganze ist natürlich nicht update-sicher.

Lässt sich das mit dem Schreiben eines Plugins lösen oder geht das nur so unschön?

Beste Grüße

Julian

Du kannst alles in Shopware überschreiben als Plugin.

Du kannst diesen Service (https://github.com/shopware/shopware/blob/5.6/engine/Shopware/Components/Validator/EmailValidator.php#L30) dekorieren und immer return true zurück geben. 

Wie man es macht => https://symfony.com/doc/current/service_container/service_decoration.html

Hier die Service Definition im Core: https://github.com/shopware/shopware/blob/5.6/engine/Shopware/Components/DependencyInjection/services.xml#L471

1 Like

klasse Shyim, das ist gut.