fde60 Posted June 17, 2021 Share Posted June 17, 2021 (edited) Bonjour, J'ai donc migré le 1er décembre une boutique de la version 1.5 vers la version 1.7.6. Tout s'est bien passé avec le module migrationpro. Sauf que je viens de m'apercevoir que les mots de passe des clients créés avant le 1/12 ne marchent plus. Oui je sais ça fait tard pour s'en apercevoir ! J'ai vu l'histoire des cookies_key mais c'est trop tard de prendre l'ancien cookie_key car il y a eu pas mal de comptes créés avec le nouveau. Quelle solution préconisez-vous ? faire une moulinette qui récupère les anciens mdp et les transforme en nouveau. Mais je vois pas comment faire ou plus simple sûrement forcer les anciens mots de passe à être changés (une sorte d'expiration de mot de passe)? merci de votre aide Edited June 17, 2021 by fde60 (see edit history) Link to comment Share on other sites More sharing options...
doekia Posted June 17, 2021 Share Posted June 17, 2021 Faire un override qui tente le hash avec l'ancien cookie_key et mettre à jour avec le nouveau en bdd Link to comment Share on other sites More sharing options...
fde60 Posted June 17, 2021 Author Share Posted June 17, 2021 merci mais j'ai pas tout compris? md5(_COOKIE_KEY_ . $passwd); ne me permettra pas de connaitre l'ancien mot de passe? Link to comment Share on other sites More sharing options...
fde60 Posted June 17, 2021 Author Share Posted June 17, 2021 quel fichier dois je modifier? Link to comment Share on other sites More sharing options...
JayLab Posted June 17, 2021 Share Posted June 17, 2021 Je pense qu'il faut regarder pour un override de la fonction checkPassword() présente dans la classe Customer.php qui est dans : /classes/Customer.php Ne modifiez pas le fichier, faites un override. Link to comment Share on other sites More sharing options...
fde60 Posted June 18, 2021 Author Share Posted June 18, 2021 Ok merci JayLab Dans cette fonction, je controle les 2 coookie ancien et nouveau? Quote /** * Check if customer password is the right one. * * @param int $idCustomer Customer ID * @param string $passwordHash Hashed password * * @return bool result */ public static function checkPassword($idCustomer, $passwordHash) { if (!Validate::isUnsignedId($idCustomer)) { die(Tools::displayError()); } // Check that customers password hasn't changed since last login $context = Context::getContext(); if ($passwordHash != $context->cookie->__get('passwd')) { return false; } $cacheId = 'Customer::checkPassword' . (int) $idCustomer . '-' . $passwordHash; if (!Cache::isStored($cacheId)) { $sql = new DbQuery(); $sql->select('c.`id_customer`'); $sql->from('customer', 'c'); $sql->where('c.`id_customer` = ' . (int) $idCustomer); $sql->where('c.`passwd` = \'' . pSQL($passwordHash) . '\''); $result = (bool) Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue($sql); Cache::store($cacheId, $result); return $result; } return Cache::retrieve($cacheId); } Link to comment Share on other sites More sharing options...
fde60 Posted June 18, 2021 Author Share Posted June 18, 2021 ici plus particulièrement? if ($passwordHash != $context->cookie->__get('passwd')) { return false; } Link to comment Share on other sites More sharing options...
fde60 Posted June 22, 2021 Author Share Posted June 22, 2021 bon visiblement personne ne sait? Sinon, peut être plus simple, y a t il possibilité (à travers un module? ) de forcer un client à changer son mot de passe si son compte à plus de 6 mois par exemple? Link to comment Share on other sites More sharing options...
doekia Posted June 22, 2021 Share Posted June 22, 2021 Il y a 3 heures, fde60 a dit : bon visiblement personne ne sait? ?? Le 6/17/2021 à 9:40 PM, doekia a dit : Faire un override qui tente le hash avec l'ancien cookie_key et mettre à jour avec le nouveau en bdd !! public function checkPasswd($id_customer,$passwd) { if (empty(parent::checkPasswd)) { if (md5('ancien cookie_key'.passwd) == Db::getInstance()->getValue('SELECT passwd WHERE id_customer='.(int)$id_customer)) { Db::getInstance()->execute(' UPDATE ps_customer SET passwd = \'.pSQL(md5('nouveau cookie_key'.passwd)).'\' WHERE id_customer = '.(int)$id_customer ); return $id_customer; } } return false; } 1 Link to comment Share on other sites More sharing options...
Johann Posted June 27, 2021 Share Posted June 27, 2021 Le 17/06/2021 à 10:10 PM, fde60 a dit : merci mais j'ai pas tout compris? md5(_COOKIE_KEY_ . $passwd); ne me permettra pas de connaitre l'ancien mot de passe? Par nature, une fonction de hachage est une one way function Link to comment Share on other sites More sharing options...
HeineFR Posted June 28, 2021 Share Posted June 28, 2021 Pour info le module migrationpro gère normalement les anciens mots de passe mais tu dois laisser le module actif sur la boutique pour cela. ne l'aurais-tu donc pas juste désinstallé ou désactivé? Link to comment Share on other sites More sharing options...
fde60 Posted July 13, 2021 Author Share Posted July 13, 2021 On 6/22/2021 at 7:53 PM, doekia said: ?? !! public function checkPasswd($id_customer,$passwd) { if (empty(parent::checkPasswd)) { if (md5('ancien cookie_key'.passwd) == Db::getInstance()->getValue('SELECT passwd WHERE id_customer='.(int)$id_customer)) { Db::getInstance()->execute(' UPDATE ps_customer SET passwd = \'.pSQL(md5('nouveau cookie_key'.passwd)).'\' WHERE id_customer = '.(int)$id_customer ); return $id_customer; } } return false; } MERCI Je vais essayer ça prochainement Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now