web-dev-qa-db-fra.com

Comment exporter des utilisateurs avec des mots de passe?

Comment exporter des utilisateurs avec des mots de passe? Le module Export des utilisateurs ne peut pas aider, il exporte sans mot de passe.

3
Vic Nicethemer

Les mots de passe des utilisateurs sont stockés à l'aide d'un algorithme de hachage unidirectionnel et ne peuvent pas être convertis en texte brut. De plus, chaque Drupal utilise un sel cryptographique unique , de sorte que le même mot de passe en texte clair sur deux Drupal ne produira pas dans le même mot de passe haché.

En d'autres termes, il n'y a aucun moyen de générer une liste de noms d'utilisateurs et de mots de passe en texte brut.

8
mpdonadio

Comme @ MPD dit , vous ne pouvez pas faire cela, mais vous pouvez exporter tous les utilisateurs et importer avec un mot de passe aléatoire et utiliser ces méthodes pour définir le mot de passe:

Référence

Générer périodiquement un nouveau mot de passe pour les utilisateurs et informer l'utilisateur du nouveau mot de passe

3
Adrian Cid Almaguer

Dans des cas d'utilisation très limités, vous pourriez vraiment avoir besoin d'autoriser certains utilisateurs à voir les mots de passe d'autres utilisateurs. Vous pouvez utiliser le module AES .

Cependant, pour exporter ces mots de passe, vous devrez écrire un module personnalisé en utilisant les mécanismes de décryptage du module AES (car les mots de passe ne seront pas également stockés en texte brut).

Une note d'avertissement: Je suggère fortement de vérifier si vous avez vraiment besoin que les utilisateurs voient les mots de passe des autres utilisateurs. Cela implique un énorme impact sur la sécurité de votre site et - comme de nombreux utilisateurs utilisent toujours les mêmes mots de passe sur différents sites Web - sur la sécurité des autres profils de votre utilisateur sur le Web.

Modifier: Après avoir fourni plus d'informations sur vos besoins, un moyen de changer les mots de passe dans une autre application lorsqu'un Drupal = l'utilisateur définit un nouveau mot de passe, sans avoir à le stocker sans hachage.

Vous devrez créer un module personnalisé . Implémentez les hooks suivants (remplacez MYMODULE par le nom de votre module):

/**
 * Implements hook_form_alter().
 */
function MYMODULE_form_alter(&$form, &$form_state, $form_id) {
  // Alter all forms that allow editing the password:
  switch ($form_id) {
    case 'user_register_form':
    case 'user_profile_form':
      // Add an own submit handler to the user forms.
      $form['#submit'][] = 'MYMODULE_set_password_submit';
      break;
  }
}

/**
 * Submit handler setting the password in the third-party application.
 */
function MYMODULE_set_password_submit($form, &$form_state) {
  // Whether the password was changed.
  if (!empty($form_state['values']['pass'])) {
    // Get the password.
    $password = $form_state['values']['pass'];

    // And now you can use the contents of $password to call
    // your other applications API for resetting passwords or
    // hashing / setting the password using direct database
    // access.

  }
}
2
Mario Steinitz

vous exportez uniquement les données (pas la structure et les données) de la table des utilisateurs de l'ancienne base de données et les importez dans la nouvelle base de données. Tous les utilisateurs avec mot de passe peuvent également être exportés de cette façon

0
Nabanita Nazir