Come verificare se l'utente ha modificato la password?


9

Volevo inviare e-mail di notifica di base all'utente, dopo aver modificato la password, per informarlo della modifica della password.

Sto usando i Rulesmoduli per questo. Ma non trovo alcuna opzione lì, per aggiungere condizioni se l'utente ha cambiato la password.

Esiste un modo per verificare se l'utente ha modificato la propria password usando le regole o in modo pragmatico.

- Molte grazie per il tuo tempo.


Risposte:


7

Il più semplice sarebbe farlo usando le Regole. Seguendo i passi successivi, dovrebbe fare il lavoro.

  1. Assicurati di aver abilitato il "filtro PHP" nella pagina dei moduli. Ciò è necessario per poter utilizzare il codice PHP all'interno delle Regole.
  2. Creare una regola che reagisce all'evento utente "Dopo aver salvato un nuovo account utente".
  3. Aggiungi una condizione di tipo "Esegui codice PHP personalizzato" e usa il frammento seguente:
    return $account_unchanged->pass != $account->pass;
  4. Aggiungi le tue azioni per inviare una notifica e-mail all'utente o qualsiasi altra cosa adatta al tuo scopo.

l'hai provato?
Aboodred1

Sì, l'ho provato poco prima di scrivere la risposta.
ovi,

Grazie, soluzione semplice ed efficiente. Funziona come il fascino !!
Kalpesh Patel,

4

Non l'ho mai provato in Regole prima, ma probabilmente si tratterebbe di confrontare i valori sugli oggetti $accounte $account->original.

Un modo per farlo nel codice personalizzato è implementare 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.
  }
}

Probabilmente potresti fare lo stesso hook_user_update(), ma non l'ho mai provato prima. Quanto sopra è tratto da un progetto dal vivo e funziona perfettamente.


1

L'uso delle regole potrebbe essere più semplice poiché lo stai già utilizzando, ma devi abilitare il modulo Filtro PHP .

Le istruzioni come segue:

  1. Abilita il modulo filtro PHP admin/modules
  2. Crea una nuova regola admin/config/workflow/rules
  3. Assicurati di selezionare After updating an existing user accountdall'elenco a discesa React on event.
  4. Aggiungi una condizione e scegli Execute custom PHP code
  5. Aggiungi il seguente codice personalizzato PHP nella sezione valore

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

  6. Quindi aggiungere un'azione e selezionare Send mail

  7. Nella sezione valore aggiungi [account:mail]e compila il campo dell'oggetto e il campo del messaggio.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.