Dans quelle table est le jeton pour réinitialiser un mot de passe enregistré? Comment le jeton est-il généré?
La procédure de réinitialisation du mot de passe se produit dans le modèle suivant
components\com_users\models\reset.php
Le jeton est généré par le code suivant juste avant l'envoi du courrier électronique à l'utilisateur:
// Set the confirmation token.
$token = JApplicationHelper::getHash(JUserHelper::genRandomPassword());
$hashedToken = JUserHelper::hashPassword($token);
$user->activation = $hashedToken;
Comme vous pouvez probablement le constater à partir des noms de fonctions, cela génère un mot de passe aléatoire et l'enregistre sous forme de hachage sécurisé dans le champ d'activation de la table users
.
Lorsque l'utilisateur réinitialise son mot de passe, diverses vérifications sont exécutées, mais c'est celle qui vérifie que le jeton correspond à celui que l'utilisateur vient d'entrer.
if (empty($user) || $user->activation !== $token)
{
$this->setError(JText::_('COM_USERS_USER_NOT_FOUND'));
return false;
}