Apakah mungkin bagi pelanggan untuk masuk dengan nomor pelanggan alih-alih alamat email

12

Saya ingin membuat halaman login yang menggunakan nomor pelanggan yang diberikan alih-alih alamat email mereka. Cara bisnis saya diatur, pada platform eComms terpisah, mereka mengakses akun mereka dengan nomor pelanggan karena mereka adalah beberapa manajer akun untuk satu akun. Saya membuat akun untuk mereka dan kemudian menetapkan nomor pelanggan, yang kemudian mereka gunakan untuk login, dengan kata sandi.

Bantuan apa pun akan sangat dihargai.

Alex WG
sumber
Saya khawatir ini terlalu papan untuk situs ini. Ya itu mungkin tetapi akan ada banyak kode penulisan ulang dan perubahan template dll untuk membuatnya bekerja.
David Manners
Terima kasih David, saya pikir ini bisa terjadi, tapi saya pikir itu layak dicoba.
Alex WG

Jawaban:

8

Dimungkinkan untuk menerapkan logika dasar dengan sedikit kode khusus:

Tulis pengamat untuk controller_predispatch_customer_account_loginPost, periksa apakah alamat email yang diposting ( username) tidak terlihat seperti alamat email. Dalam hal ini, cari pelanggan dengan nomor pelanggan dan ganti bidang nama pengguna dalam data POST dengan alamat email sebenarnya dari pelanggan yang ditemukan.

Contoh kode pengamat:

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

Lalu controller_postdispatch_customer_account_loginPost, ganti alamat email di sesi kembali ke nomor pelanggan, jika sudah diatur. Kalau tidak, pesan kesalahan pada login gagal akan berisi alamat email, bukan nomor.

Contoh kode pengamat:

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

Hal-hal lain yang perlu dipertimbangkan:

  • Terapkan logika yang sama ke formulir "lupa kata sandi"
  • Putuskan apakah Anda ingin menggunakan increment_idnomor pelanggan bawaan, yang dapat Anda aktifkan dalam konfigurasi sistem di bawah Konfigurasi Pelanggan> Buat Opsi Akun Baru> Hasilkan ID Pelanggan yang Ramah Manusia
Fabian Schmengler
sumber
6

Mengapa hanya angka ...

https://github.com/diglin/Diglin_Username

Dengan ekstensi ini, Anda dapat meminta orang masuk dengan nama pengguna. Jelas Anda dapat mengunci 'nama pengguna' itu ke 'nomor akun' tanpa terlalu banyak kesulitan.

Kucing Henry
sumber
Saya pikir ini harus berhasil. Saya membayangkan saya harus melakukan sejumlah penyesuaian. Untuk membuatnya bekerja seperti yang saya inginkan.
Alex WG