Estoy tratando de migrar usuarios de un sitio Drupal 6 a un sitio Drupal 7. Mi problema es cómo cambiar su contraseña de MD5 a la hash (utilizada por D7).
¿Tienes alguna idea?
20
Para actualizar la contraseña de md5 al hash, necesitaba usar user_hash_password () y conectar una 'U'. Aquí está el guión que solía hacer que funcione.
<?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();
}
}
}
Entonces corrí
drush scr <name_of_the_script_file>
Y funcionó.
Hay una respuesta MUY simple a esto:
Referencia: preservar contraseñas de usuario
fuente
Si alguien necesita un script PHP independiente para migrar usuarios de Drupal 6 a Drupal 7, entonces aquí está:
fuente
Bueno, si actualizas saldrás con tus contraseñas OK. Supongo que probablemente podrías mirar el código de actualización para ver cómo lo hacen.
Sin embargo, si solo está migrando usuarios, probablemente el enfoque más probable sería enviar enlaces de inicio de sesión únicos a todos y hacer que restablezcan sus contraseñas.
fuente
Si ejecuté esto desde devel / php en el sitio D7, descubrí que solo necesitaba:
Ambos sitios estaban en el mismo servidor web.
fuente
$this->destination = new MigrateDestinationUser(array('md5_passwords' => TRUE)); ... $this->addFieldMapping('pass', 'source_password');