Programador PHP freelance

Como cambiar o resetear la contraseña del administrador de Prestashop

Habitualmente las contraseñas en los proyectos web son guardadas en la base de datos de forma encriptada en un formato hash. Con esto evitamos guardar en claro dichas contraseñas. El algoritmo de encriptación además suele ser bastante básico, com aplicar un MD5 o similar.

En algunos proyectos, no obstante, añaden cierta complejidad incorporando un valor adicional a la formula de encriptación. Es el caso de Prestashop que desde sus orígenes utiliza una cadena definida en el fichero config/settings.php. Dicha variable queda definida en ese fichero como _COOKIE_KEY_

Cuando deseamos resetear o modificar las contraseñas necesitamos regenerar los hash que se guardan en la bases de datos. En el caso de Prestashop deberemos de incorporar el valor antes comentado.

En los proyectos que muevo muchas veces clonar el entorno de producción en un entorno de desarrollo con la finalidad de realizar ampliaciones. Y muchas veces necesitas poder logarte con varios usuarios con roles diferentes, entre ellos el de administrador, el resto de empleados o los usuarios clientes. La forma más cómoda que he encontrado de trabajar es la de resetear o cambiar todas las contraseñas al mismo valor.

Os adjunto un script que he preparado para facilitar esto último. Es muy intuitivo. Si lo copiáis en el directorio config y lo ejecutáis desde consola o bien por URL, modificará todas las contraseñas a la definida en la variable $passwd.

<?php
require_once ‘settings.inc.php’;

$link = mysqli_connect(_DB_SERVER_, _DB_USER_, _DB_PASSWD_, _DB_NAME_);

if (!$link) {
die(‘Connect Error (‘ . mysqli_connect_errno() . ‘) ‘
. mysqli_connect_error());
}

$passwd = ‘NoVaInternet’;
$md5 = md5(_COOKIE_KEY_ . $passwd);
$link->query(“UPDATE ” . _DB_PREFIX_ . “employee SET passwd = ‘$md5′”);
$link->query(“UPDATE ” . _DB_PREFIX_ . “customer SET passwd = ‘$md5′”);

mysqli_close($link);
?>