Pregunta

Estoy buscando una manera de conectar el evento de que los clientes cambien sus contraseñas. Entonces, si alguien cambia la contraseña en la interfaz del cliente, me gustaría enviar un correo electrónico en algún lugar.

Consulté la lista en http://www.nicksays.co.uk/magento-events-heatheet-1-7/ Pero nada parece un evento para cambiar las contraseñas.

¿Fue útil?

Solución

Gracias a Fabian Blechschmidt, se me ocurrió lo siguiente que funciona para mí (usando el evento 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;
}

Otros consejos

Eche un vistazo al código.

Puedes usar el customer_save_after evento y solo verificar

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

Tal vez este valor se restablezca, entonces tienes que usar save_before, pero recomiendo enviar el correo después del ahorro. Entonces, si este valor no es legible en el evento posterior, cópielo a otro atributo para tenerlo a mano en el evento posterior.

Quería hacer algo similar, pero terminé con su código: en su lugar:

Me enganché 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);
}

¡Un poco más más limpio y "más seguro" que fafar con la contraseña en sí, creo!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top