เป็นไปได้หรือไม่ที่ลูกค้าจะล็อกอินด้วยหมายเลขลูกค้าแทนที่อยู่อีเมล


12

ฉันต้องการสร้างหน้าเข้าสู่ระบบที่ใช้หมายเลขลูกค้าที่ได้รับมอบหมายแทนที่อยู่อีเมลของพวกเขา วิธีการตั้งค่าธุรกิจของฉันบนแพลตฟอร์ม eComms แยกต่างหากพวกเขาเข้าถึงบัญชีของพวกเขาด้วยหมายเลขลูกค้าเนื่องจากพวกเขาเป็นผู้จัดการบัญชีหลายคนสำหรับหนึ่งบัญชี ฉันสร้างบัญชีสำหรับพวกเขาแล้วกำหนดหมายเลขลูกค้าซึ่งพวกเขาใช้ในการเข้าสู่ระบบด้วยรหัสผ่าน

ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมอย่างมาก.


ฉันกลัวว่านี่เป็นบอร์ดเกินไปสำหรับเว็บไซต์นี้ ใช่เป็นไปได้ แต่จะมีรหัสการเขียนใหม่จำนวนมากและการเปลี่ยนแม่แบบและอื่น ๆ เพื่อให้ทำงานได้
David Manners

ขอบคุณ David ฉันว่านี่อาจเป็นกรณี แต่ฉันคิดว่ามันน่าจะคุ้มค่ากับการยิง
Alex WG

คำตอบ:


8

เป็นไปได้ที่จะใช้ตรรกะพื้นฐานด้วยรหัสที่กำหนดเองเล็กน้อย:

เขียนสังเกตการณ์การcontroller_predispatch_customer_account_loginPostตรวจสอบว่าที่อยู่อีเมลที่โพสต์ ( username) ไม่ได้มีลักษณะเช่นที่อยู่อีเมล ในกรณีนี้ค้นหาลูกค้าตามหมายเลขลูกค้าและแทนที่ฟิลด์ชื่อผู้ใช้ในข้อมูล POST ด้วยที่อยู่อีเมลจริงของลูกค้าที่พบ

ตัวอย่างรหัสผู้สังเกตการณ์:

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

จากนั้นในcontroller_postdispatch_customer_account_loginPostให้แทนที่ที่อยู่อีเมลในเซสชันกลับไปยังหมายเลขลูกค้าหากมีการตั้งค่าไว้ มิฉะนั้นข้อความแสดงข้อผิดพลาดในการเข้าสู่ระบบที่ไม่สำเร็จจะมีที่อยู่อีเมลแทนหมายเลข

ตัวอย่างรหัสผู้สังเกตการณ์:

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

สิ่งอื่น ๆ ที่ควรพิจารณา:

  • ใช้ตรรกะเดียวกันกับแบบฟอร์ม "ลืมรหัสผ่าน"
  • ตัดสินใจว่าคุณต้องการใช้บิวด์อินincrement_idเป็นหมายเลขลูกค้าหรือไม่ซึ่งคุณสามารถเปิดใช้งานในการกำหนดค่าระบบภายใต้การกำหนดค่าลูกค้า> สร้างตัวเลือกบัญชีใหม่> สร้างรหัสลูกค้าที่เป็นมิตรกับมนุษย์

6

ทำไมต้องเป็นเพียงตัวเลข ...

https://github.com/diglin/Diglin_Username

ด้วยส่วนขยายนี้คุณสามารถให้บุคคลอื่นลงชื่อเข้าใช้ด้วยชื่อผู้ใช้ เห็นได้ชัดว่าคุณสามารถล็อค 'ชื่อผู้ใช้' เหล่านั้นเป็น 'หมายเลขบัญชี' ได้โดยไม่ยากเกินไป


ฉันคิดว่ามันน่าจะใช้ได้นะ ฉันถ่ายภาพฉันจะต้องทำการปรับแต่งตามจำนวนที่กำหนด เพื่อให้มันทำงานอย่างที่ฉันต้องการ
Alex WG
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.