J'essaie de migrer les utilisateurs d'un Drupal 6 vers un site Drupal 7. Mon problème est de savoir comment changer leur mot de passe de MD5 à celui de hachage (utilisé par D7).
Avez-vous une idée?
20
Pour mettre à jour le mot de passe md5 vers celui haché, je devais utiliser user_hash_password () et concacter un «U». Voici le script que j'ai utilisé pour le faire fonctionner.
<?php
require_once DRUPAL_ROOT . '/' . variable_get('password_inc', 'includes/password.inc');
$res = db_query('select * from drupal.users');
if($res) {
foreach ($res as $result) {
$hashed_pass = user_hash_password($result->pass, 11);
if ($hashed_pass) {
$hashed_pass = 'U' . $hashed_pass;
db_update('users')->fields(array('pass' => $hashed_pass))->condition('uid', $result->uid)->execute();
}
}
}
Puis j'ai couru
drush scr <name_of_the_script_file>
Et ça a marché.
Il y a une réponse TRÈS simple à ceci:
Référence: conservation des mots de passe utilisateur
la source
Si quelqu'un a besoin d'un script PHP autonome pour migrer les utilisateurs de Drupal 6 vers Drupal 7, alors voici:
la source
Eh bien, si vous mettez à niveau vous sortez avec vos mots de passe OK. Je suppose que vous pourriez probablement regarder le code de mise à niveau pour voir comment ils le font.
Cependant, si vous ne faites que migrer des utilisateurs, l'approche la plus probable serait probablement d'envoyer des liens de connexion uniques à tout le monde et de les inciter à réinitialiser leurs mots de passe.
la source
Si je l'ai exécuté depuis devel / php sur le site D7, j'ai trouvé que j'avais seulement besoin de:
Les deux sites étaient sur le même serveur Web.
la source
$this->destination = new MigrateDestinationUser(array('md5_passwords' => TRUE)); ... $this->addFieldMapping('pass', 'source_password');