¿Es posible que los clientes inicien sesión con un número de cliente en lugar de una dirección de correo electrónico?

12

Quiero crear una página de inicio de sesión que use un número de cliente asignado en lugar de su dirección de correo electrónico. La forma en que mi negocio está configurado, en una plataforma de eComms separada, acceden a su cuenta con un número de cliente porque son múltiples administradores de cuentas para una cuenta. Creo cuentas para ellos y luego les asigno un número de cliente, que luego usan para iniciar sesión, con una contraseña.

Cualquier ayuda sería muy apreciada.

Alex WG
fuente
Me temo que esto es demasiado para este sitio. Sí, es posible, pero habría una gran cantidad de código de reescritura y cambio de plantillas, etc. para que esto funcione.
David Manners
Gracias David, pensé que este podría ser el caso, pero pensé que valía la pena intentarlo.
Alex WG

Respuestas:

8

Es posible implementar la lógica básica con poco código personalizado:

Escriba un observador para controller_predispatch_customer_account_loginPost, verifique si la dirección de correo electrónico publicada ( username) no parece una dirección de correo electrónico. En este caso, busque al cliente por número de cliente y reemplace el campo de nombre de usuario en los datos POST con la dirección de correo electrónico real del cliente encontrado.

Ejemplo de código de observador:

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

Luego controller_postdispatch_customer_account_loginPost, reemplace la dirección de correo electrónico en la sesión nuevamente con el número de cliente, si está configurado. De lo contrario, los mensajes de error en los inicios de sesión fallidos contendrán la dirección de correo electrónico en lugar del número.

Ejemplo de código de observador:

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

Otras cosas a considerar:

  • Aplicar la misma lógica al formulario "Olvidé mi contraseña"
  • Decida si desea utilizar el increment_idnúmero de cliente integrado , que puede habilitar en la configuración del sistema en Configuración del cliente> Crear nuevas opciones de cuenta> Generar ID de cliente amigable para el ser humano
Fabian Schmengler
fuente
6

¿Por qué solo números ...

https://github.com/diglin/Diglin_Username

Con esta extensión, puede hacer que las personas inicien sesión con nombres de usuario. Claramente, puede bloquear esos 'nombres de usuario' en 'números de cuenta' sin demasiada dificultad.

Gato de henry
fuente
Creo que esto debería funcionar. I Imaging tendré que hacer una cierta cantidad de personalización. Para que funcione como quiero.
Alex WG