È possibile per i clienti accedere con un numero cliente anziché un indirizzo e-mail


12

Voglio creare una pagina di accesso che utilizza un numero cliente assegnato anziché il loro indirizzo e-mail. Il modo in cui è impostata la mia attività, su una piattaforma eComms separata, accede al proprio account con un numero cliente perché sono più account manager per un account. Creo account per loro e quindi assegno un numero cliente, che poi usano per accedere, con una password.

Qualsiasi aiuto sarebbe molto apprezzato.


Temo che questo sia troppo consiglio per questo sito. Sì, è possibile, ma ci sarebbe un sacco di riscrittura del codice e modifica dei modelli ecc. Per farlo funzionare.
David Manners,

Grazie David, ho pensato che potesse essere così, ma ho pensato che potesse valere la pena.
Alex WG,

Risposte:


8

È possibile implementare la logica di base con poco codice personalizzato:

Scrivi un osservatore per controller_predispatch_customer_account_loginPost, controlla se l'indirizzo e-mail pubblicato ( username) non sembra un indirizzo e-mail. In questo caso, cercare il cliente per numero cliente e sostituire il campo nome utente nei dati POST con l'indirizzo e-mail effettivo del cliente trovato.

Esempio di codice osservatore:

$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());
    }
}

Quindi controller_postdispatch_customer_account_loginPost, sostituisci l'indirizzo e-mail nella sessione con il numero cliente, se impostato. In caso contrario, i messaggi di errore sugli accessi non riusciti conterranno l'indirizzo e-mail anziché il numero.

Esempio di codice osservatore:

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

Altre cose da considerare:

  • Applicare la stessa logica al modulo "password dimenticata"
  • Decidi se desideri utilizzare il increment_idnumero cliente incorporato , che puoi abilitare nella configurazione del sistema in Configurazione cliente> Crea nuove opzioni account> Genera ID cliente a misura d'uomo

6

Perché solo numeri ...

https://github.com/diglin/Diglin_Username

Con questa estensione puoi fare in modo che le persone accedano con nomi utente. Chiaramente puoi bloccare quei "nomi utente" su "numeri account" senza troppe difficoltà.


Penso che dovrebbe funzionare. I imaging dovrò fare una certa quantità di personalizzazione. Per farlo funzionare come voglio.
Alex WG,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.