Вопрос

Я ищу способ задействовать событие клиентов менять свои пароли. Так что, если кто-то меняет пароль на бренде клиентов, я бы хотел куда-нибудь отправить электронное письмо.

Я проконсультировался с списком в http://www.nicksays.co.uk/magento-events-cheat-sheet-1-7/ Но ничто не похоже на событие для изменения паролей.

Это было полезно?

Решение

Благодаря Фабиану Блечшмидту я придумал следующее, которое работает для меня (используя мероприятие 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;
}

Другие советы

Посмотрите на код.

Вы можете использовать customer_save_after мероприятие и просто проверьте на

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

Может быть, это значение сброшено, тогда вам нужно использовать save_before, но я рекомендую отправить почту после сохранения. Поэтому, если это значение не читается в событии после, скопируйте его в другой атрибут, чтобы получить его вручную в After Agation.

Я хотел сделать что -то подобное, но вместо этого я получил его код:

Я зацепился 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);
}

Я думаю, что немного более чище и «безопаснее», чем Faffing с самим паролем!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top