Müşteri şifresi değişikliği için olay / gözlemci?


10

Müşterilerin şifrelerini değiştirmesi olayına bağlanmanın bir yolunu arıyorum. Birisi müşteri ön ucundaki şifreyi değiştirirse, bir yere e-posta göndermek istiyorum.

Listeye http://www.nicksays.co.uk/magento-events-cheat-sheet-1-7/ adresinden başvurdum ancak hiçbir şey şifreleri değiştirmek için bir olay gibi görünmüyor .


Bir müşteri kullanarak şifresini sıfırladığında hangi gözlemcinin / olayın kullanılacağına dair bir fikrin var /customer/account/resetpassword/?id=ab&token=xyzmı?
oschloebe

Yanıtlar:


9

Fabian Blechschmidt sayesinde, benim için çalışan (etkinliği kullanarak customer_save_before) aşağıdakileri buldum :

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;
}


İşe yarıyor, evet. :-) Şifre almak için çeşitli yöntemler ve yardımcı fonksiyonları denedim ama tüm elde edebildiğim şifre karma oldu ama ben düz okunabilir gerekli ve POST nesne sundu. Tekrar teşekkürler!
oschloebe

Parola ile düz metin veya kötü kripto ;-) gibi tuhaf şeyler yapmayın;
Fabian Blechschmidt

1
Yapmayacağım, söz verdim! Sadece PRISM'e gönderiyoruz. ;-)
oschloebe

bu sadece passwordve confirmationposta verilerinde olduğu gibi sıfırlama şifresi için olduğu gibi çalışmaz . v1.9 ile test edilmiştir
pHiL

5

Koda bir göz atın.

customer_save_afterEtkinliği kullanabilir ve yalnızca

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

Belki bu değer sıfırlanır, sonra kullanmanız gerekir save_before, ancak kaydettikten sonra postayı göndermenizi öneririm. Bu nedenle after olayında bu değer okunamıyorsa, after olayında eliniz olması için başka bir niteliğe kopyalayın.


Şimdiye kadar teşekkürler. Gördüğüm kadarıyla, bir müşteri başarıyla kaydolduğunda etkinlik de tetiklenir. Müşterinin zaten kayıtlı olup olmadığını ve şifrenin gerçekten değişip değişmediğini kontrol edebileceğim bir yol / yöntem var mı?
oschloebe

_before olayında nesnede zaten bir kimlik olup olmadığını kontrol edebilirsiniz
Fabian Blechschmidt

4

Ben benzer bir şey yapmak istedim, ama onun kodu ile sona erdi:

Taktım 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);
}

Biraz daha temiz ve "Güvenli" Parola kendisi hakkında faffing daha, sanırım!


Mage::app()->getRequest()->getParam('id')bu etkinlikte null. ayrıca predispatch. passwordve tho confirmationolarak mevcuttur Mage::app()->getRequest()->getParams(). (
V1.9
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.