Réinitialiser le mot de passe admin PrestaShop en base, de la 1.6 à la 9

Le back-office est inaccessible et le contexte fait que l’email de réinitialisation n’est pas disponible. Comment se connecter au BackOffice de PrestaShop ?
Un accès SSH ou les fichiers en local. La base de données est accessible ou un accès à PhpMyAdmin.
Voici la commande, par version et ça peut faire gagner du temps.

Valable uniquement pour les comptes employés (table ps_employee).

Pour PrestaShop 1.7, 8 et 9

Utilisation du même algorithme : bcrypt
qui produit des résultats de la forme
$2y$12$mO2mLQcL4T/l4b8dWBzoDO9g5R8gIiCm/FrQs1yFw7vDHPVEMVjqu

php -r 'echo password_hash("mypassword123", PASSWORD_BCRYPT), PHP_EOL;'

Le mot de passe apparait : il ne reste plus qu’à aller le copié/collé dans la base de données dans la colonne passwd

PrestaShop 1.6 et antérieures

Algorithme différent : md5, avec une clé propre à l’installation.
Le hash produit est de la forme
72262b52d92e699653dd92f589550f80

La clé se récupère d’abord dans config/settings.inc.php, constante COOKIE_KEY. Elle se colle ensuite à la place de LA_COOKIE_KEY :

php -r 'echo md5("LA_COOKIE_KEY" . "mypassword123"), PHP_EOL;'

Le hash apparait : il ne reste plus qu’à aller le copié/collé dans la base de données dans la colonne passwd, comme pour les versions récentes.

Sans cette clé, aucun hash valide n’est calculable : c’est la seule différence de fond avec les versions 1.7 et suivantes.

Version inconnue ? Le md5 passe partout

checkHash() teste bcrypt puis md5, et ce second passage n’a jamais été retiré, même en version 9. La commande 1.6 fonctionne donc sur toutes les versions, à condition d’avoir la clé de cookie.
Pratique en dépannage, mais bcrypt reste le meilleur choix.

Derniers articles