顧客パスワード変更のイベント/オブザーバー?


10

お客様がパスワードを変更するイベントにフックする方法を探しています。したがって、誰かが顧客のフロントエンドでパスワードを変更した場合、どこかに電子メールを送信したいと思います。

私はhttp://www.nicksays.co.uk/magento-events-cheat-sheet-1-7/でリストを調べましたが、パスワードを変更するイベントのようには見えません。


お客様がパスワードをリセットするときに使用するオブザーバー/イベントは何/customer/account/resetpassword/?id=ab&token=xyzですか?
oschloebe 2013

回答:


9

Fabian Blechschmidtのおかげで、私は(イベントを使用してcustomer_save_before)自分に役立つ次のことを思いつきました。

public function detectPwdChange(Varien_Event_Observer $observer) {
    $event              = $observer->getEvent();
    $customer           = $event->getCustomer();
    $postData           = Mage::app()->getRequest()->getPost();

    if($customer instanceof Mage_Customer_Model_Customer && !$customer->isObjectNew()) {

        if( $postData['change_password'] == 1 && $postData['current_password'] != $postData['password'] ) {
            // Do something
        }
    }

    return $this;
}

投稿のリクエストは好きではありませんが、うまくいった場合は素晴らしいです:-)
Fabian Blechschmidt 2013

うまくいきます。:-)パスワードを取得するためにいくつかのメソッドとヘルパー関数を試しましたが、取得できるのはパスワードハッシュだけでしたが、単純に読み取り可能である必要があり、それがPOSTオブジェクトが提供するものです。再度、感謝します!
oschloebe 2013

平文や不正な暗号で保存するなど、パスワードで奇妙なことをしないでください;-)
Fabian Blechschmidt 2013

1
約束しない!PRISMに送るだけです。;-)
オシュローブ2013

ポストデータのみがpasswordありconfirmation、パスワードをリセットする場合、これはそのままでは機能しません。v1.9でテスト
pHiL

5

コードを確認してください。

customer_save_afterイベントを使用して確認するだけです

/app/code/core/Mage/Customer/controllers/AccountController.php:724
$customer->setChangePassword(1);

たぶんこの値がリセットされてからを使う必要がありますがsave_before、保存後にメールを送ることをお勧めします。したがって、この値が後のイベントで読み取れない場合は、別の属性にコピーして、後のイベントで手で持ってください。


今までありがとう。私が見る限り、イベントは顧客が正常に登録されたときにもトリガーされます。顧客がすでに登録されており、パスワードが実際に変更されたかどうかを確認できる方法/方法はありますか?
oschloebe 2013

_beforeイベントでは、IDがオブジェクトに既に存在するかどうかを確認できます
Fabian Blechschmidt 2013

4

私は同じようなことをしたかったのですが、代わりに彼のコードで終わりました:

私は夢中になりました controller_action_postdispatch_customer_account_resetpasswordpost

function resetpasswordpost(Varien_Event_Observer $observer) {
    $customer_id = Mage::app()->getRequest()->getParam('id');
    $customer = Mage::getModel('customer/customer')->load($customer_id);
}

パスワード自体をいじくるよりも少しクリーンで「安全」だと思います。


Mage::app()->getRequest()->getParam('id')このイベントではnullです。発送前にも。passwordそしてtho confirmationで利用可能ですMage::app()->getRequest()->getParams()。(v1.9でテスト済み)
2016年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.