Setel ulang kata sandi pengguna tanpa menggunakan "Lupa kata sandi?"

9

Saya tahu bahwa di Drupal 7 saya bisa mengatur ulang kata sandi pengguna # 1 melalui kode.

define('DRUPAL_ROOT', getcwd());
require_once DRUPAL_ROOT . '/includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
require_once DRUPAL_ROOT . '/includes/password.inc';
$newhash = user_hash_password('newpass');
$updatepass = db_update('users') 
  ->fields(array('pass' => $newhash))
  ->condition('uid', '1', '=')
  ->execute();

( user_hash_password()tidak ada lagi di Drupal 8.)

Atau, saya bisa menggunakan kode berikut.

define('DRUPAL_ROOT', getcwd());
require_once DRUPAL_ROOT . '/includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
require_once DRUPAL_ROOT . '/includes/password.inc';
$edit['pass'] = 'newpass';
$account= user_load(1);
user_save($account, $edit);

Apa kode yang setara untuk Drupal 8? API apa yang harus saya gunakan untuk tujuan ini?

Yusef
sumber

Jawaban:

12

Lebih mudah hari ini:

$account = \Drupal::entityTypeManager()->getStorage('user')->load(1);
$account->setPassword('new password');
$account->save();
Clive
sumber
seperti biasa solusi yang sangat baik dan jelas, tnx Master Clive
Yusef
2

Bergantian, karena Anda tampaknya menjalankan ini sebagai skrip mandiri, ada perintah Drush (9.x)

drush user:password admin mynewpassword

Untuk Drush 8.x dan sebelumnya ::

drush user-password admin --password=newpass
Gapple
sumber