Redefina a senha do usuário sem usar "Esqueceu a senha?"

9

Eu sei que no Drupal 7 eu poderia redefinir a senha do usuário nº 1 via código.

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()não existe mais no Drupal 8.)

Como alternativa, eu poderia usar o seguinte código.

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

Qual é o código equivalente para o Drupal 8? Qual API devo usar para esse fim?

Yusef
fonte

Respostas:

12

Hoje é mais fácil:

$account = \Drupal::entityTypeManager()->getStorage('user')->load(1);
$account->setPassword('new password');
$account->save();
Clive
fonte
como sempre solução muito boa e clara, tnx Master Clive
Yusef 16/02
2

Como alternativa, como você parece estar executando isso como um script independente, há um comando Drush (9.x)

drush user:password admin mynewpassword

Para Drush 8.xe versões anteriores ::

drush user-password admin --password=newpass
gapple
fonte