Як перевірити, чи змінив користувач пароль?


9

Я хотів надіслати користувачеві основне повідомлення електронної пошти після зміни пароля, щоб повідомити його про зміну пароля.

Я використовую Rulesдля цього модулі. Але я не знаходжу тут жодної опції, щоб додати умову, якщо користувач змінив пароль.

Чи я можу перевірити, чи змінив користувач свій пароль, використовуючи правила чи прагматично.

- Велике спасибі за ваш час.


1
Перевірити це може допомогти вам drupal.stackexchange.com/questions/68380/…
Самуель

Відповіді:


7

Найпростіше було б зробити це за допомогою Правил. Виконуючи наступні кроки, слід виконати роботу.

  1. Переконайтесь, що ви включили "PHP фільтр" на сторінці модулів. Це потрібно для використання PHP-коду в Правилах.
  2. Створіть правило, яке реагує на подію користувача "Після збереження нового облікового запису користувача".
  3. Додайте умову типу "Виконати спеціальний код PHP" та скористайтеся таким фрагментом:
    return $account_unchanged->pass != $account->pass;
  4. Додайте дії, щоб надіслати сповіщення електронною поштою користувачеві чи будь-що інше, що відповідає вашим цілям.

ви пробували?
Aboodred1

Так, я перевірив це лише до того, як написав відповідь.
ovi

Спасибі, просте та ефективне рішення. Працює як шарм !!
Kalpesh Patel

4

Я раніше не пробував цього в Правилах, але, мабуть, це було б питанням порівняння значень для об'єктів $accountта $account->originalоб'єктів.

Один із способів зробити це у власному коді - це реалізувати 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.
  }
}

Ви, напевно, могли б зробити те ж саме hook_user_update(), але я цього раніше не пробував. Сказане взято з прямого проекту та працює чудово.


1

Використання правил може бути простішим, оскільки ви його вже використовуєте, але вам потрібно включити модуль PHP Filter .

Вказівки наступні:

  1. Увімкнути модуль фільтра PHP admin/modules
  2. Створіть нове правило admin/config/workflow/rules
  3. Переконайтесь, що виберіть After updating an existing user accountзі спадного списку Реагувати на події.
  4. Додайте умову та виберіть Execute custom PHP code
  5. Додайте наступний спеціальний код PHP у розділ значення

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

  6. Потім додайте дію та виберіть Send mail

  7. У розділі значення додайте [account:mail]та заповніть поле теми та поле повідомлення.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.