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


9

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

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

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

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


回答:


7

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

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

試しましたか?
Aboodred1 2013

はい、答えを書く直前にテストしました。
ovi 2013

ありがとう、シンプルで効率的なソリューション。魅力的な作品!
Kalpesh Patel 2013

4

私はこれまでにルールで試したことはありませんが、$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()、私はこれまでに試したことはありません。上記はライブプロジェクトから取得され、完全に機能します。


1

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

次の手順:

  1. PHPフィルターモジュールを有効にする admin/modules
  2. 新しいルールを作成する admin/config/workflow/rules
  3. [ After updating an existing user accountReact on event]ドロップダウンリストから必ず選択してください。
  4. 条件を追加して選択 Execute custom PHP code
  5. 値セクションに次のPHPカスタムコードを追加します

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

  6. 次に、アクションを追加して選択します Send mail

  7. 値セクションで、[account:mail]件名フィールドとメッセージフィールドを追加して入力します。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.