Comment vérifier si l'utilisateur a changé le mot de passe?

9

Je voulais envoyer un e-mail de notification de base à l'utilisateur, après qu'il a changé le mot de passe, pour l'informer du changement de mot de passe.

J'utilise des Rulesmodules pour cela. Mais je n'y trouve aucune option, pour ajouter une condition si l'utilisateur a changé le mot de passe.

Existe-t-il un moyen de vérifier si l'utilisateur a changé son mot de passe à l'aide de règles ou de manière pragmatique.

-- Merci beaucoup pour votre temps.

Kalpesh Patel
la source
1
Vérifiez que cela peut vous aider drupal.stackexchange.com/questions/68380/…
Samuel Beniamin

Réponses:

7

Le plus simple serait de le faire en utilisant des règles. Après les étapes suivantes, devrait faire le travail.

  1. Assurez-vous d'avoir activé le "filtre PHP" sur la page des modules. Cela est nécessaire pour pouvoir utiliser le code PHP dans les règles.
  2. Créez une règle qui réagit à l'événement utilisateur "Après avoir enregistré un nouveau compte utilisateur".
  3. Ajoutez une condition de type "Exécuter du code PHP personnalisé" et utilisez l'extrait de code suivant:
    return $account_unchanged->pass != $account->pass;
  4. Ajoutez vos actions pour envoyer une notification par e-mail à l'utilisateur ou tout autre élément qui correspond à votre objectif.
ovi
la source
L'as tu essayé?
Aboodred1
Oui, j'ai testé cela juste avant d'écrire la réponse.
ovi
Merci, solution simple et efficace. Fonctionne comme un charme !!
Kalpesh Patel du
4

Je ne l'ai pas essayé auparavant dans Rules, mais il s'agirait probablement de comparer des valeurs sur les objets $accountet $account->original.

Une façon de le faire dans du code personnalisé consiste à implémenter hook_user_presave():

function MYMODULE_user_presave(&$edit, $account, $category) {
  // Don't show message for registering users.
  if (isset($account->is_new) && $account->is_new) {
    return;
  }

  if (!empty($edit['pass']) && $account->pass != $edit['pass']) {
    // Password has been changed.
  }
}

Vous pourriez probablement faire de même dans hook_user_update(), mais je n'ai jamais essayé cela auparavant. Ce qui précède est tiré d'un projet en direct et fonctionne parfaitement.

Clive
la source
1

L'utilisation de règles peut être plus facile car vous l'utilisez déjà, mais vous devez activer le module Filtre PHP .

Les instructions comme suit:

  1. Activer le module de filtre PHP admin/modules
  2. Créer une nouvelle règle admin/config/workflow/rules
  3. Assurez-vous de sélectionner After updating an existing user accountdans la liste déroulante Réagir sur l'événement.
  4. Ajoutez une condition et choisissez Execute custom PHP code
  5. Ajoutez le code personnalisé PHP suivant dans la section valeur

    if(!empty($account->current_pass)) { return true; }

  6. Ajoutez ensuite une action et sélectionnez Send mail

  7. Dans la section valeur, ajoutez [account:mail]et remplissez le champ objet et le champ message.
Aboodred1
la source