Wie überprüfe ich, ob der Benutzer das Passwort geändert hat?

9

Ich wollte dem Benutzer eine grundlegende Benachrichtigungs-E-Mail senden, nachdem er das Passwort geändert hat, um ihn über die Änderung des Passworts zu informieren.

Ich benutze dafür RulesModule. Aber ich finde dort keine Option, um eine Bedingung hinzuzufügen, wenn der Benutzer das Passwort geändert hat.

Kann ich auf irgendeine Weise überprüfen, ob der Benutzer sein Passwort mithilfe von Regeln oder pragmatisch geändert hat?

- Vielen Dank für Ihre Zeit.

Kalpesh Patel
quelle
1
Überprüfen Sie, ob
Samuel Beniamin

Antworten:

7

Am einfachsten wäre es, dies mithilfe von Regeln zu tun. Befolgen Sie die nächsten Schritte, sollte die Arbeit erledigen.

  1. Stellen Sie sicher, dass Sie den "PHP-Filter" auf der Modulseite aktiviert haben. Dies ist erforderlich, um PHP-Code in Rules verwenden zu können.
  2. Erstellen Sie eine Regel, die auf das Benutzerereignis "Nach dem Speichern eines neuen Benutzerkontos" reagiert.
  3. Fügen Sie eine Bedingung vom Typ "Benutzerdefinierten PHP-Code ausführen" hinzu und verwenden Sie das folgende Snippet:
    return $account_unchanged->pass != $account->pass;
  4. Fügen Sie Ihre Aktion (en) hinzu, um eine E-Mail-Benachrichtigung an den Benutzer oder etwas anderes zu senden, das Ihrem Zweck entspricht.
ovi
quelle
Hast du es versucht?
Aboodred1
Ja, ich habe das getestet, kurz bevor ich die Antwort geschrieben habe.
Ovi
Danke, einfache und effiziente Lösung. Funktioniert wie Charme !!
Kalpesh Patel
4

Ich habe es noch nie in Rules versucht, aber es würde wahrscheinlich darum gehen, Werte für die $accountund $account->original-Objekte zu vergleichen.

Eine Möglichkeit, dies in benutzerdefiniertem Code zu tun, besteht darin, Folgendes zu implementieren 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.
  }
}

Sie könnten wahrscheinlich das Gleiche tun hook_user_update(), aber das habe ich noch nie versucht. Das Obige stammt aus einem Live-Projekt und funktioniert perfekt.

Clive
quelle
1

Das Verwenden von Regeln ist möglicherweise einfacher, da Sie es bereits verwenden, Sie müssen jedoch das PHP-Filtermodul aktivieren .

Die Anweisungen wie folgt:

  1. Aktivieren Sie das PHP-Filtermodul admin/modules
  2. Erstellen Sie eine neue Regel admin/config/workflow/rules
  3. After updating an existing user accountStellen Sie sicher, dass Sie aus der Dropdown-Liste Reagieren auf Ereignis auswählen auswählen .
  4. Fügen Sie eine Bedingung hinzu und wählen Sie Execute custom PHP code
  5. Fügen Sie den folgenden benutzerdefinierten PHP-Code in den Werteabschnitt ein

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

  6. Fügen Sie dann eine Aktion hinzu und wählen Sie Send mail

  7. Fügen Sie im Wertebereich Betrefffeld [account:mail]und Nachrichtenfeld hinzu und füllen Sie es aus.
Aboodred1
quelle