Zresetuj hasło użytkownika bez użycia „Nie pamiętasz hasła?”

9

Wiem, że w Drupal 7 mogłem zresetować hasło użytkownika nr 1 za pomocą kodu.

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()już nie istnieje w Drupal 8)

Alternatywnie mógłbym użyć następującego kodu.

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);

Jaki jest równoważny kod dla Drupal 8? Jakiego interfejsu API powinienem użyć do tego celu?

Yusef
źródło

Odpowiedzi:

12

Teraz jest łatwiej:

$account = \Drupal::entityTypeManager()->getStorage('user')->load(1);
$account->setPassword('new password');
$account->save();
Clive
źródło
jak zawsze bardzo dobre i jasne rozwiązanie, tnx Master Clive
Yusef