고객이 이메일 주소 대신 고객 번호로 로그인 할 수 있습니까?


12

이메일 주소 대신 지정된 고객 번호를 사용하는 로그인 페이지를 만들고 싶습니다. 비즈니스가 별도의 eComms 플랫폼에서 설정되는 방식은 한 계정의 여러 계정 관리자이기 때문에 고객 번호로 계정에 액세스합니다. 계정을 만든 다음 고객 번호를 할당 한 다음 비밀번호를 사용하여 로그인하는 데 사용합니다.

도움을 주시면 감사하겠습니다.


나는 이것이이 사이트에 대한 보드가 아닌 것 같아. 예, 가능하지만이 작업을 수행하기 위해 많은 코드를 다시 작성하고 템플릿을 변경하는 등의 작업이 필요합니다.
— David Manners

데이비드에게 감사합니다. 비록 이것이 사실 일 수는 있지만 기회가 될 수는 있습니다.
— 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제공 고객 번호로 사용할지 여부를 결정하십시오. 고객 구성> 새 계정 옵션 작성> 친숙한 고객 ID 생성 의 시스템 구성에서 사용할 수 있습니다.

6

왜 숫자인가 ...

https://github.com/diglin/Diglin_Username

이 확장을 사용하면 사람들이 사용자 이름으로 로그인하도록 할 수 있습니다. 분명히 당신은 너무 많은 어려움없이 그 '사용자 이름'을 '계정 번호'로 잠글 수 있습니다.


나는 이것이 효과가 있다고 생각한다. 이미징 일정량의 사용자 지정을 수행해야합니다. 내가 원하는 방식으로 작동하게하십시오.
— Alex WG
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.