Saya mencoba memigrasikan pengguna dari situs Drupal 6 ke situs Drupal 7. Masalah saya adalah bagaimana mengubah kata sandi mereka dari MD5 menjadi hash (digunakan oleh D7).
Apakah kamu punya ide?
20
Untuk memperbarui kata sandi md5 ke kata hash, saya harus menggunakan user_hash_password () dan membuat huruf 'U'. Berikut ini skrip yang saya gunakan untuk membuatnya bekerja.
<?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();
}
}
}
Lalu aku berlari
drush scr <name_of_the_script_file>
Dan itu berhasil.
Ada jawaban yang SANGAT sederhana untuk ini:
Referensi: Mempertahankan kata sandi pengguna
sumber
Jika seseorang membutuhkan skrip PHP mandiri untuk memigrasikan pengguna dari Drupal 6 ke Drupal 7, maka ini dia:
sumber
Nah, jika Anda memutakhirkan Anda keluar dengan kata sandi Anda OK. Saya kira Anda mungkin bisa melihat kode peningkatan untuk melihat bagaimana mereka melakukannya.
Namun, jika Anda hanya memigrasikan pengguna, mungkin pendekatan yang paling mungkin adalah mengirim tautan masuk satu kali ke semua orang dan meminta mereka untuk mereset kata sandi mereka.
sumber
Jika saya menjalankan ini dari devel / php di situs D7, saya menemukan saya hanya perlu:
Kedua situs berada di server web yang sama.
sumber
$this->destination = new MigrateDestinationUser(array('md5_passwords' => TRUE)); ... $this->addFieldMapping('pass', 'source_password');