Jump to content

Pb mot de passe suite migration client de 1.5 vers 1.7


fde60

Recommended Posts

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 by fde60 (see edit history)
Link to comment
Share on other sites

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

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

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;
}

 

  • Like 1
Link to comment
Share on other sites

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

  • 3 weeks later...
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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...