顧客がメールアドレスの代わりに顧客番号でログインすることは可能ですか?


12

メールアドレスの代わりに割り当てられた顧客番号を使用するログインページを作成したい。私のビジネスのセットアップ方法は、別のeCommsプラットフォームで、1つのアカウントの複数のアカウントマネージャーであるため、顧客番号でアカウントにアクセスします。それらのアカウントを作成し、顧客番号を割り当てます。顧客番号を使用して、パスワードを使用してログインします。

どんな助けも大歓迎です。


これは、このサイトにはあまりにもボードであると恐れています。はい、可能ですが、コードを書き直したり、テンプレートを変更したりして、これを機能させます。
デビッドマナーズ

デビッド、ありがとう、これは事実かもしれないが、一撃の価値があるかもしれないけど。
アレックス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

この拡張機能を使用すると、ユーザーにユーザー名でログインさせることができます。明らかに、これらの「ユーザー名」を「アカウント番号」にロックダウンするのにそれほど困難はありません。


これでうまくいくと思う。ある程度のカスタマイズを行う必要があります。私が望むように動作させるために。
アレックスWG
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.