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


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.