Có thể khách hàng đăng nhập bằng số khách hàng thay vì địa chỉ email


12

Tôi muốn tạo một trang đăng nhập sử dụng số khách hàng được chỉ định thay vì địa chỉ email của họ. Cách thức kinh doanh của tôi được thiết lập, trên nền tảng eComms riêng biệt, họ truy cập vào tài khoản của họ với số khách hàng vì họ là nhiều người quản lý tài khoản cho một tài khoản. Tôi tạo tài khoản cho họ và sau đó gán số khách hàng, sau đó họ sử dụng để đăng nhập, bằng mật khẩu.

Mọi sự trợ giúp sẽ rất được trân trọng.


Tôi sợ rằng đây là quá bảng cho trang web này. Có, điều đó là có thể nhưng sẽ có rất nhiều mã viết lại và thay đổi các mẫu, v.v. để làm việc này.
David Manners

Cảm ơn David, tôi mặc dù điều này có thể là trường hợp, nhưng tôi mặc dù nó có thể đáng giá một shot.
Alex WG

Câu trả lời:


8

Có thể triển khai logic cơ bản với ít mã tùy chỉnh:

Viết một người quan sát controller_predispatch_customer_account_loginPost, kiểm tra xem địa chỉ email đã đăng ( username) không giống địa chỉ email. Trong trường hợp này, tra cứu khách hàng theo số khách hàng và thay thế trường tên người dùng trong dữ liệu POST bằng địa chỉ email thực tế của khách hàng tìm thấy.

Mã quan sát mẫu:

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

Sau đó controller_postdispatch_customer_account_loginPost, thay thế địa chỉ email trong phiên trở lại số khách hàng, nếu nó được đặt. Nếu không, thông báo lỗi khi đăng nhập không thành công sẽ chứa địa chỉ email thay vì số.

Mã quan sát mẫu:

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

Những điều khác cần xem xét:

  • Áp dụng logic tương tự cho mẫu "quên mật khẩu"
  • Quyết định xem bạn có muốn sử dụng increment_idsố khách hàng tích hợp, bạn có thể bật trong cấu hình hệ thống trong Cấu hình khách hàng> Tạo tùy chọn tài khoản mới> Tạo ID khách hàng thân thiện với con người

6

Tại sao chỉ là số ...

https://github.com/diglin/Diglin_Username

Với tiện ích mở rộng này, bạn có thể có người đăng nhập bằng tên người dùng. Rõ ràng bạn có thể khóa những 'tên người dùng' đó thành 'số tài khoản' mà không gặp quá nhiều khó khăn.


Tôi nghĩ rằng điều này sẽ làm việc. Tôi hình ảnh tôi sẽ phải làm một số lượng tùy chỉnh nhất định. Để làm cho nó hoạt động như tôi muốn.
Alex WG
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.