2012-06-29 11 views
5

Estoy migrando un sitio desactualizado de Saas a una nueva instalación empresarial de magento y no creo que pueda transferir las contraseñas de los clientes. Están encriptados usando la función Perl crypt().Magento Migra clientes sin contraseña.

Me pregunto cuál es el mejor flujo de trabajo para esto, ya que estoy seguro de que otros deben haber encontrado algo similar.

no me importa tener que enviar un correo electrónico pidiendo a todos nuestros clientes para crear una nueva contraseña, o pidiéndoles que la próxima vez que se conecten.

Pero lo que debería poner en el campo de la contraseña para ¿importar? Por seguridad, seguramente no puedo dar a todos la misma contraseña temporal.

Tenemos casi 123,000 clientes (muchos de los cuales probablemente ya no estén activos) así que puede tomar un poco de tiempo.

Gracias de antemano.

Respuesta

5

Creo que la mejor forma de hacerlo es generar automáticamente contraseñas junto con las cuentas, todas ellas con funcionalidad integrada de Magento, como se demuestra a continuación:

$customer = Mage::getModel('customer/customer'); 

$password = '123456'; 
$email = '[email protected]'; 

$customer->setWebsiteId(Mage::app()->getWebsite()->getId()); 
$customer->loadByEmail($email); 

if(!$customer->getId()) { // if customer does not already exists, by email 
    // new data 
    $customer->setEmail($email); 
    $customer->setFirstname('Johnny'); 
    $customer->setLastname('Doels'); 
    $newPassword = $customer->generatePassword(); // generate a new password 
    $customer->changePassword($newPassword); // set it 

} else { 
    // do something here for existing customers 
} 

try { 
    $customer->save(); 
    $customer->setConfirmation(null); 
    $customer->save(); 
    $customer->sendPasswordReminderEmail(); // save successful, send new password 
} 

catch (Exception $ex) { 
    //Zend_Debug::dump($ex->getMessage()); 
} 
+1

He usado $ customer-> setPassword ($ newPassword); en lugar de $ customer-> changePassword ($ newPassword); –

+0

¿Qué versión de Magento estás usando? Lo anterior se probó con 1.6 y más. –

+0

Estoy usando la versión Magento CE 1.7 –

2

Como se indica en esta página wiki, Magento admite salado y hashes MD5 sin sal. Esto es técnicamente cierto, pero hacer que funcione es muy sencillo.

Básicamente, debe copiar las contraseñas hash MD5 con una cadena vacía como sal.

Por ejemplo, tome la contraseña "foobar", el hash MD5 es "3858f62230ac3c915f300c664312c63f". Si coloca esto directamente en el db, no funcionará. El sistema de autenticación busca un ":" en el hash de contraseña para obtener la sal. En pocas palabras, agregue un ":" al final y Magento saltará la contraseña sin nada, por lo que solo obtendrá el hash MD5 regular.

“3858f62230ac3c915f300c664312c63f” -> “3858f62230ac3c915f300c664312c63f:”

También puede crear simplemente al azar las contraseñas, que son ordenadas de una manera y los clientes pueden restablecer fácilmente su contraseña para generar una nueva contraseña que se les enviaría por correo electrónico en lugar de intentar importar contraseñas existentes

+1

Gracias, sí, no son contraseñas hash MD5. Tendré que crear contraseñas aleatorias y hacer que las reinicien. Gracias, – willboudle

0

usuarios restablecer las contraseñas sería mi último recurso. Si sabe qué método de hash se utilizó para cifrar las contraseñas, entonces no debería necesitar restablecer las contraseñas.

Migre las contraseñas de los clientes a la base de datos magento como su combinación de hash y salt. A continuación, puede sobrecargar el método de hashing de contraseña en magento para verificar si el cliente tiene un hash viejo o un nuevo hash.

Si el cliente tiene un hash viejo, use su antiguo método crypt y salt para verificar la contraseña.Si lo desea, podría actualizar al nuevo método que autenticó correctamente.

Si puede crear la función hash en php que sería más fácil. Alternativamente solo llame a un programa perl de php.

Cuestiones relacionadas