Jak sprawdzić, czy użytkownik zmienił hasło?

9

Chciałem wysłać użytkownikowi podstawowe powiadomienie e-mail po zmianie hasła, aby poinformować go o zmianie hasła.

Używam Rulesdo tego modułów. Ale nie znajduję tam żadnej opcji, aby dodać warunek, jeśli użytkownik zmienił hasło.

Czy jest jakiś sposób, aby sprawdzić, czy użytkownik zmienił hasło przy użyciu reguł lub pragmatycznie.

-- Wielkie dzięki za twój czas.

Kalpesh Patel
źródło
1
Sprawdź, czy może ci to pomóc drupal.stackexchange.com/questions/68380/…
Samuel Beniamin

Odpowiedzi:

7

Najłatwiej byłoby to zrobić za pomocą Reguł. Wykonując kolejne kroki, powinien wykonać zadanie.

  1. Upewnij się, że masz włączony „Filtr PHP” na stronie modułów. Jest to potrzebne, aby móc używać kodu PHP w Regułach.
  2. Utwórz regułę, która zareaguje na zdarzenie użytkownika „Po zapisaniu nowego konta użytkownika”.
  3. Dodaj warunek typu „Wykonaj niestandardowy kod PHP” i użyj następującego fragmentu kodu:
    return $account_unchanged->pass != $account->pass;
  4. Dodaj swoje działania, aby wysłać powiadomienie e-mail do użytkownika lub cokolwiek innego, co odpowiada Twojemu celowi.
ovi
źródło
próbowałeś tego?
Aboodred1,
Tak, przetestowałem to tuż przed napisaniem odpowiedzi.
ovi
Dzięki, proste i wydajne rozwiązanie. Działa jak urok !!
Kalpesh Patel,
4

Nie próbowałem tego wcześniej w Regułach, ale prawdopodobnie będzie to kwestia porównania wartości w obiektach $accounti $account->original.

Jednym ze sposobów na to w niestandardowym kodzie jest zaimplementowanie 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.
  }
}

Prawdopodobnie mógłbyś zrobić to samo hook_user_update(), ale nie próbowałem tego wcześniej. Powyższe pochodzi z projektu na żywo i działa idealnie.

Clive
źródło
1

Korzystanie z reguł może być łatwiejsze, ponieważ już go używasz, ale musisz włączyć moduł PHP Filter .

Instrukcje w następujący sposób:

  1. Włącz moduł filtra PHP admin/modules
  2. Utwórz nową regułę admin/config/workflow/rules
  3. Pamiętaj, aby wybrać opcję After updating an existing user accountReact on event dropdow list.
  4. Dodaj warunek i wybierz Execute custom PHP code
  5. Dodaj następujący kod niestandardowy PHP w sekcji wartości

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

  6. Następnie dodaj akcję i wybierz Send mail

  7. W sekcji wartości dodaj [account:mail]i wypełnij pole tematu i pole komunikatu.
Aboodred1
źródło