Reset d'un mot de passe Drupal 7

Dans la catégorie perte de mot de passe (voir ici pour Drupal 6), voici une manière de faire pour changer un mot de passe Drupal 7, avec l'aide d'un script, si on n'a pas accès directement à la base de données Drupal.

Il faut créer un script, que vous allez déposer délicatement à la racine de votre répertoire Drupal (à côté du script update.php). Ensuite, en allant à l'URL http://monsite/resetPassw0rd.php?pass=NOUVEAUMOTDEPASSE&uid=1, vous pourrez changer le mot de passe du compte admin.

Le script en question :

<?php
// Changement de mot de passe d'un compte Drupal
//
define('DRUPAL_ROOT', getcwd());
require_once DRUPAL_ROOT . '/includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
require_once DRUPAL_ROOT . '/includes/password.inc';
if (isset($_GET['pass']) && !empty($_GET['pass'])) {
  if (isset($_GET['uid']) && !empty($_GET['uid'])) {
    $newhash =  user_hash_password($_GET['pass']);
    $userid = $_GET['uid'];
  }
  else { die('Retry with ?pass=PASSWORD&uid=UID set in the URL'); }
}
else { die('Retry with ?pass=PASSWORD&uid=UID set in the URL'); }

echo "<p>Changement de mot de passe pour UID : ",$userid," Nouveau mot de passe : ",$newhash,"</p>";

$updatepass = db_update('users')
  ->fields(array(
    'pass' => $newhash,
  ))
  ->condition('uid', $userid, '=')
  ->execute();

if ( $updatepass == 1 ) {
  echo "Mot de passe chang&eacute;.";
  echo "<p>Ce fichier (", $_SERVER['SCRIPT_FILENAME'], ") va &ecirc;tre effac&eacute;</p>";
  if ( unlink ($_SERVER['SCRIPT_FILENAME']) ) {
    echo "<p>Fichier effac&eacute; ! ";
  }
  else
  {
    echo "<p>Impossible d'effacer le fichier. Merci de le supprimer manuellement";
  }
   
}
else
{ echo "<p>Changement de mot de passe KO"; }

echo "</p>";
drupal_exit();
?>

Une fois exécuté, le script s'autodétruit (si les droits sur le fichier sont corrects). Dans le cas contraire, il demande de le supprimer manuellement.

On peut aussi faire la manipulation avec drush,si on a un accès en ligne de commande au serveur. http://www.vincentliefooghe.net/content/reset-password-avec-drush

 

 

 

Catégorie