お客様がパスワードを変更するイベントにフックする方法を探しています。したがって、誰かが顧客のフロントエンドでパスワードを変更した場合、どこかに電子メールを送信したいと思います。
私はhttp://www.nicksays.co.uk/magento-events-cheat-sheet-1-7/でリストを調べましたが、パスワードを変更するイベントのようには見えません。
お客様がパスワードを変更するイベントにフックする方法を探しています。したがって、誰かが顧客のフロントエンドでパスワードを変更した場合、どこかに電子メールを送信したいと思います。
私はhttp://www.nicksays.co.uk/magento-events-cheat-sheet-1-7/でリストを調べましたが、パスワードを変更するイベントのようには見えません。
回答:
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;
}
password
ありconfirmation
、パスワードをリセットする場合、これはそのままでは機能しません。v1.9でテスト
コードを確認してください。
customer_save_after
イベントを使用して確認するだけです
/app/code/core/Mage/Customer/controllers/AccountController.php:724
$customer->setChangePassword(1);
たぶんこの値がリセットされてからを使う必要がありますがsave_before
、保存後にメールを送ることをお勧めします。したがって、この値が後のイベントで読み取れない場合は、別の属性にコピーして、後のイベントで手で持ってください。
私は同じようなことをしたかったのですが、代わりに彼のコードで終わりました:
私は夢中になりました 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でテスト済み)
/customer/account/resetpassword/?id=ab&token=xyz
ですか?