Чи можливо для клієнтів увійти за допомогою клієнтського номера замість адреси електронної пошти


12

Я хочу створити сторінку для входу, яка використовує призначений номер клієнта замість їх електронної адреси. Те, як налаштований мій бізнес, на окремій платформі eComms, вони отримують доступ до свого облікового запису з номером клієнта, оскільки це кілька менеджерів акаунтів для одного облікового запису. Я створюю для них облікові записи, а потім присвоюю номер клієнта, який вони потім використовують для входу, паролем.

Будь-яка допомога буде дуже вдячна.


Я побоююся, що це занадто рада для цього сайту. Так, можливо, але було б дуже багато коду для перезапису та зміни шаблонів тощо.
Девід Маннерс

Дякую тобі, Девіде, я хоч і мав би це бути так, але я хоч і міг би пограти.
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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.