it-swarm.com.de

So setzen Sie das Benutzerkennwort programmgesteuert zurück

Ich versuche, ein benutzerdefiniertes Modul zum Zurücksetzen des Benutzerpassworts zu erstellen.

Im folgenden Codeblock versuche ich, das Passwort in Hash-Form zu erhalten:

$pass='[email protected]';

$autoloader =require_once(\Drupal::service('file_system')->realpath('autoload.php'));
//echo $autoloader; exit;
$request = Request::createFromGlobals();
$kernel = DrupalKernel::createFromRequest($request, $autoloader, 'prod', FALSE);
$kernel->boot();
$password_hasher = $kernel->getContainer()->get('password');
$newhash =  $password_hasher->hash($pass);

//echo  $newhash ; exit; 

Dies ist mein Datenbank-Update-Code:

 $updatepass = \Drupal::database()->update('users_field_data')
      ->fields(array(
        'pass' => $newhash,
      ))
      ->condition('name', "$id",'=')
      ->execute();

Bitte helfen Sie mir zu verstehen, welchen Fehler ich gemacht habe.

1
Abhinaw Aanand

Verwenden Sie einfach die Methode setPassword() , um das Kennwort des Benutzers zu aktualisieren:

// Get user storage object.
$user_storage = \Drupal::entityManager()->getStorage('user');

// Load user by their user ID
$user = $user_storage->load($id);

// Set the new password
$user->setPassword('[email protected]');

// Save the user
$user->save();

Dies kümmert sich um das gesamte Hashing für Sie und löst alle geeigneten Hooks zum Speichern eines Benutzers aus.

3
Felix Eve