web-dev-qa-db-ja.com

ユーザーがパスワードを変更したかどうかを確認するにはどうすればよいですか?

パスワードが変更された後、ユーザーに基本的な通知メールを送信して、パスワードの変更をユーザーに通知したいと考えていました。

そのためにRulesモジュールを使用しています。しかし、ユーザーがパスワードを変更した場合の条件を追加するオプションは見つかりません。

ユーザーがルールを使用して、または実用的にパスワードを変更したかどうかを確認できる方法はありますか?.

-お時間をいただきありがとうございます。

9
Kalpesh Patel

ルールを使用してこれを行うのが最も簡単です。次の手順に従って、仕事をする必要があります。

  1. モジュールのページで「PHPフィルター」が有効になっていることを確認してください。これは、ルール内でPHPコードを使用できるようにするために必要です。
  2. ユーザーイベント「新しいユーザーアカウントを保存した後」に反応するルールを作成します。
  3. タイプ「カスタムの実行PHPコード」の条件を追加し、次のスニペットを使用します。
    return $account_unchanged->pass != $account->pass;
  4. アクションを追加して、ユーザーまたは目的に合った他の何かに電子メール通知を送信します。
7
ovi

これまでにルールで試したことはありませんが、_$account_オブジェクトと_$account->original_オブジェクトの値を比較することはおそらく問題でしょう。

カスタムコードでそれを行う1つの方法は、実装 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()でも同じことをすることができますが、私は以前にそれを試したことはありません。上記はライブプロジェクトから取得され、完全に機能します。

4
Clive

ルールは既に使用しているので簡単かもしれませんが、PHP Filterモジュールを有効にする必要があります。

次のような手順:

  1. 有効にするPHPフィルターモジュール_admin/modules_
  2. 新しいルールを作成する_admin/config/workflow/rules_
  3. イベントドロップダウンリストでReactから_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]_を追加し、件名フィールドとメッセージフィールドに入力します。
1
Aboodred1