パスワードが変更された後、ユーザーに基本的な通知メールを送信して、パスワードの変更をユーザーに通知したいと考えていました。
そのためにRules
モジュールを使用しています。しかし、ユーザーがパスワードを変更した場合の条件を追加するオプションは見つかりません。
ユーザーがルールを使用して、または実用的にパスワードを変更したかどうかを確認できる方法はありますか?.
-お時間をいただきありがとうございます。
ルールを使用してこれを行うのが最も簡単です。次の手順に従って、仕事をする必要があります。
return $account_unchanged->pass != $account->pass;
これまでにルールで試したことはありませんが、_$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()
でも同じことをすることができますが、私は以前にそれを試したことはありません。上記はライブプロジェクトから取得され、完全に機能します。
ルールは既に使用しているので簡単かもしれませんが、PHP Filterモジュールを有効にする必要があります。
次のような手順:
admin/modules
_admin/config/workflow/rules
_After updating an existing user account
_を選択してください。Execute custom PHP code
_を選択します次のPHPカスタムコードを値セクションに追加します
if(!empty($account->current_pass)) { return true; }
次に、アクションを追加して_Send mail
_を選択します
[account:mail]
_を追加し、件名フィールドとメッセージフィールドに入力します。