Ist es Kunden möglich, sich mit einer Kundennummer anstelle einer E-Mail-Adresse anzumelden?

12

Ich möchte eine Anmeldeseite erstellen, die eine zugewiesene Kundennummer anstelle ihrer E-Mail-Adresse verwendet. So wie mein Unternehmen auf einer separaten eComms-Plattform eingerichtet ist, greifen sie mit einer Kundennummer auf ihr Konto zu, da sie mehrere Kontomanager für ein Konto haben. Ich erstelle für sie Konten und weise ihnen dann eine Kundennummer zu, über die sie sich mit einem Passwort anmelden.

Jede Hilfe wäre sehr dankbar.

Alex WG
quelle
Ich befürchte, dass dies zu Board für diese Site ist. Ja, es ist möglich, aber es würde eine Menge Code umschreiben und Vorlagen usw. ändern, um dies zum Laufen zu bringen.
David Manners
Danke David, ich dachte, dass dies der Fall sein könnte, aber ich dachte, dass es einen Versuch wert sein könnte.
Alex WG

Antworten:

8

Es ist möglich, die grundlegende Logik mit wenig benutzerdefiniertem Code zu implementieren:

Schreiben Sie einen Beobachter für controller_predispatch_customer_account_loginPost, prüfen Sie, ob die hinterlegte E-Mail-Adresse ( username) dies nicht tut wie eine E-Mail-Adresse aussieht. In diesem Fall suchen Sie den Kunden nach Kundennummer und ersetzen Sie das Feld Benutzername in den POST-Daten durch die tatsächliche E-Mail-Adresse des gefundenen Kunden.

Beispiel für einen Beobachtercode:

$request = $observer->getControllerAction()->getRequest();
$username = $request->getPost('username');
if (false === strpos($username, '@')) {
    $customer = Mage::getModel('customer/customer')
        ->getCollection()
        ->addAttributeToFilter('customer_number', $username)
        ->getFirstItem();
    if ($customer && $customer->getEmail()) {
        $request->setPost('username', $customer->getEmail());
    }
}

Dann controller_postdispatch_customer_account_loginPostersetzen Sie die E - Mail - Adresse in der Sitzung zurück auf die Kundennummer, wenn es gesetzt ist. Andernfalls enthalten Fehlermeldungen bei fehlgeschlagenen Anmeldungen die E-Mail-Adresse anstelle der Nummer.

Beispiel für einen Beobachtercode:

$emailAddress = Mage::getSingleton('customer/session')->getUsername();
if ($emailAddress) {
      $customerNumber = Mage::getModel('customer/customer')->loadByEmail($emailAddress)
          ->getCustomerNumber();
}
Mage::getSingleton('customer/session')->setUsername($customerNumber);

Andere Dinge zu beachten:

  • Wenden Sie dieselbe Logik auf das Formular "Passwort vergessen" an
  • Entscheiden Sie, ob Sie die integrierte increment_idKundennummer verwenden möchten , die Sie in der Systemkonfiguration unter Kundenkonfiguration> Neue Kontooptionen erstellen> Benutzerfreundliche Kunden-ID erstellen aktivieren können
Fabian Schmengler
quelle
6

Warum nur Zahlen ...

https://github.com/diglin/Diglin_Username

Mit dieser Erweiterung können sich Personen mit Benutzernamen anmelden. Natürlich können Sie diese "Benutzernamen" ohne allzu große Schwierigkeiten auf "Kontonummern" beschränken.

Henrys Katze
quelle
Ich denke das sollte funktionieren. Bei der Bildgebung muss ich einige Anpassungen vornehmen. Damit es funktioniert, wie ich will.
Alex WG