Pasar clientes de PrestaShop 1.6 a 8 sin perder sus contraseñas
Un compañero montó una 8.1 limpia y pasó a mano clientes y direcciones de una 1.6 con ocho años de datos. Las contraseñas siguieron funcionando gracias a la clave de cookies, le recomendaron revisar la política de contraseñas y se topó con que el importador de direcciones pide el email. Aprendes el proceso y lo que no se puede hacer.
Un compañero de la comunidad tenía una tienda 1.6 con más de ocho años de datos (y que a su vez venía de una 1.5) y decidió no actualizarla: montó una 8.1 limpia y pasó los datos a mano, limpiando por el camino lo que él llamaba «datos fósiles». Lo contó en varios mensajes entre febrero y mayo de 2024, y del hilo salen las tres claves para que los clientes puedan seguir entrando con su contraseña de siempre.
1. La clave de cookies: lo que hace que las contraseñas sigan valiendo
Cuando planteó la migración, su primera idea fue poner una contraseña genérica a todos y que cada cliente la cambiara. Gustavo, de la comunidad, le paró enseguida: no puedes cambiar las contraseñas de tus clientes sin su permiso. Y le dio la solución: si la tienda nueva tiene la misma clave de cookies que la vieja, las contraseñas son las mismas.
Por qué funciona:
- PrestaShop 1.6 guardaba la contraseña cifrada con un algoritmo antiguo que mezcla la contraseña con la clave de cookies de la tienda (
_COOKIE_KEY_, enconfig/settings.inc.php). - PrestaShop 1.7 y 8 usan un cifrado más seguro, pero siguen aceptando el antiguo: si la contraseña coincide con el método viejo, el cliente entra y la tienda la vuelve a guardar con el nuevo.
- Para comprobarla con el método viejo necesitan la clave antigua. En 8.x está en
app/config/parameters.php, comocookie_key.
Así que el paso es copiar la clave de la 1.6 en el cookie_key de la tienda nueva antes de importar nada, y vaciar la caché. El compañero lo confirmó meses después: la importación de clientes fue perfecta y las contraseñas antiguas funcionaban.
Si por lo que sea no puedes conservar la clave, no inventes: avisa a los clientes de que, por el cambio de sistema, deben pedir una contraseña nueva con «¿Has olvidado tu contraseña?». Es lo que propuso Gustavo.
2. La política de contraseñas
Al principio, aun con la clave copiada, los clientes recibían «Error de autenticación». Otro miembro del grupo le dio una pista: revisa la política de seguridad de las contraseñas, porque a él la tienda no le aceptaba las contraseñas cortas. PrestaShop 8 añadió una política configurable en Parámetros avanzados → Seguridad (longitud mínima y máxima, y una puntuación mínima de seguridad). En la 9.2 esa política se aplica al crear o cambiar la contraseña, no al iniciar sesión, pero un cliente con una contraseña antigua corta no podrá volver a ponerla igual si la cambia. Al compañero, al final, le funcionaron todas las contraseñas antiguas.
3. Las direcciones necesitan el email
Con los clientes dentro, faltaban las direcciones. Al prepararlas para el importador CSV de la 8.1 vio que le exigía el email, un campo que la tabla de direcciones no tiene. Rekire le explicó por qué: el email es el dato que identifica a cada cliente en el importador, y es lo que usa para saber a qué cliente pertenece cada dirección. Le toca cruzar en la hoja de cálculo la tabla de direcciones con la de clientes para añadir el email.
La alternativa que le sugirieron fue importar la tabla ps_address directamente por SQL. Como había conservado los IDs originales de los clientes, el id_customer de cada dirección encaja. Otro compañero le dio la advertencia importante: asegúrate de lo de la clave primaria. Que no choquen IDs con direcciones creadas en la tienda nueva y que el contador automático de la tabla quede por encima del último ID importado. Comprobó que la estructura de ps_address no había cambiado entre 1.6 y 8.1, lo que hace viable ese camino.
Cuánto trabajo es
Le preguntaron cuánto tardó. Unos dos días de trabajo intenso, casi todo en limpieza con la hoja de cálculo: tablas dinámicas, puntos y caracteres raros que los clientes meten en los campos y que la 1.6 aceptaba pero luego rompen la importación. Su argumento para hacerlo a mano: más control y una base limpia. El de los demás: un módulo de migración lo hace en mucho menos tiempo. Las dos cosas son ciertas.
Lo que no hay que olvidar
- Conserva los IDs de clientes (y de pedidos si los pasas). Facturas, direcciones y pedidos dependen de ellos.
- Conserva las URL. Gustavo lo repitió: lo más importante de una migración es tener las mismas URL. Si usabas un módulo para limpiarlas en 1.6, usa uno equivalente en la nueva.
- Prueba el acceso con varias cuentas reales antes de abrir la tienda.
- Si tienes clientes de la 1.6 que no compran desde hace años, valora si debes conservarlos: es un buen momento para aplicar tu política de conservación de datos.
Esto salió en @PrestashopEsp, la mayor comunidad PrestaShop de España en Telegram. Ver la conversación