Próbuję migrować użytkowników z Drupal 6 na stronę Drupal 7. Mój problem polega na tym, jak zmienić hasło z MD5 na hash (używane przez D7).
Masz jakiś pomysł?
20
Aby zaktualizować hasło md5 do zaszyfrowanego, musiałem użyć user_hash_password () i zawrzeć „U”. Oto skrypt, którego użyłem, aby działał.
<?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();
}
}
}
Potem pobiegłem
drush scr <name_of_the_script_file>
I zadziałało.
Istnieje BARDZO prosta odpowiedź na to:
Odwołanie: zachowanie haseł użytkowników
źródło
Jeśli ktoś potrzebuje samodzielnego skryptu PHP do migracji użytkowników z Drupal 6 na Drupal 7, oto:
źródło
Cóż, jeśli zaktualizujesz, wyjdziesz z hasłami OK. Myślę, że prawdopodobnie mógłbyś spojrzeć na kod aktualizacji, aby zobaczyć, jak to robią.
Jeśli jednak migrujesz użytkowników, prawdopodobnie najbardziej prawdopodobnym rozwiązaniem byłoby wysłanie każdemu jednorazowych łączy logowania i skłonienie ich do zresetowania haseł.
źródło
Gdybym uruchomił to z devel / php na stronie D7, okazało się, że potrzebuję tylko:
Obie strony były na tym samym serwerze internetowym.
źródło
$this->destination = new MigrateDestinationUser(array('md5_passwords' => TRUE)); ... $this->addFieldMapping('pass', 'source_password');