Müşterilerin e-posta adresi yerine müşteri numarası ile giriş yapması mümkün müdür?


12

E-posta adresleri yerine atanmış bir müşteri numarası kullanan bir giriş sayfası oluşturmak istiyorum. İşletmemin kurulum şekli, ayrı bir eComms platformunda, hesaplarına bir müşteri numarasıyla erişiyor çünkü bir hesap için birden çok hesap yöneticisi. Onlar için hesaplar oluşturuyorum ve sonra bir şifre ile giriş yapmak için kullandıkları bir müşteri numarası atarım.

Herhangi bir yardım büyük mutluluk duyacağız.


Korkarım ki bu site için çok fazla yönetim kurulu yok. Evet mümkün ama bu işe almak için bir sürü yeniden yazma kodu ve şablonlar vb değiştirme olurdu.
David Manners

Teşekkürler David, böyle olsa da, ama denemeye değer olabilir.
Alex WG

Yanıtlar:


8

Temel mantığı çok az özel kodla uygulamak mümkündür:

İçin bir gözlemci yaz controller_predispatch_customer_account_loginPost, nakledilen e-posta adresi (kontrol username) yok değil bir e-posta adresi gibi görünüyor. Bu durumda müşteriyi müşteri numarasına göre arayın ve POST verilerindeki kullanıcı adı alanını bulunan müşterinin gerçek e-posta adresiyle değiştirin.

Örnek gözlemci kodu:

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

Ardından controller_postdispatch_customer_account_loginPost, oturumda e-posta adresini, ayarlanmışsa müşteri numarasına geri koyun. Aksi takdirde, başarısız oturum açmalardaki hata iletileri, numara yerine e-posta adresini içerir.

Örnek gözlemci kodu:

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

Dikkate alınacak diğer şeyler:

  • "Şifremi unuttum" formuna aynı mantığı uygulayın
  • Müşteri yapılandırması> Yeni Hesap Seçenekleri Oluştur> İnsan Dostu Müşteri Kimliği Oluşturincrement_id altında sistem yapılandırmasında etkinleştirebileceğiniz yerleşik müşteri numarası olarak kullanmak isteyip istemediğinize karar verin

6

Neden sadece rakamlar ...

https://github.com/diglin/Diglin_Username

Bu uzantı ile kullanıcıların kullanıcı adlarıyla oturum açmasını sağlayabilirsiniz. Bu 'kullanıcı adlarını' çok fazla zorluk çekmeden 'hesap numaralarına' kilitleyebilirsiniz.


Bunun işe yarayacağını düşünüyorum. Belli bir miktar özelleştirme yapmak zorunda kalacağımı düşünüyorum. Nasıl istediğimi çalıştırabilmek için.
Alex WG
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.