如何查看用户是否修改了密码?


9

更改密码后,我想向用户发送基本通知电子邮件,以通知他密码更改。

我正在Rules为此使用模块。但是我没有找到任何选项,如果用户更改了密码,则无法添加条件。

有什么方法可以检查用户是否使用规则或实用方式更改了密码。

-非常感谢您的宝贵时间。


Answers:


7

最简单的方法是使用“规则”执行此操作。接下来的步骤,应该做的工作。

  1. 确保已在模块页面上启用“ PHP筛选器”。为了能够在Rules中使用PHP代码,这是必需的。
  2. 创建一个对用户事件“保存新用户帐户后”做出反应的规则。
  3. 添加类型为“执行自定义PHP代码”的条件,并使用以下代码段:
    return $account_unchanged->pass != $account->pass;
  4. 添加您的操作,以向用户或适合您目的的其他任何方式发送电子邮件通知。

你试过了吗?
Aboodred1年

是的,我在编写答案之前就对此进行了测试。
ovi 2013年

谢谢,简单有效的解决方案。像魅力一样工作!!
Kalpesh Patel

4

我以前没有在Rules中尝试过,但是可能是比较$accountand $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过滤器模块。

说明如下:

  1. 启用PHP过滤器模块 admin/modules
  2. 创建一个新规则 admin/config/workflow/rules
  3. 确保After updating an existing user account从事件下拉列表中的React中选择。
  4. 添加条件并选择 Execute custom PHP code
  5. 在value部分中添加以下PHP自定义代码

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

  6. 然后添加一个动作并选择 Send mail

  7. 在值部分中,添加[account:mail]并填充主题字段和消息字段。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.