กิจกรรม / ผู้สังเกตการณ์สำหรับการเปลี่ยนรหัสผ่านของลูกค้า?


10

ฉันกำลังมองหาวิธีที่จะขอเข้าร่วมในกรณีที่ลูกค้าเปลี่ยนรหัสผ่าน ดังนั้นหากมีคนเปลี่ยนรหัสผ่านในส่วนหน้าของลูกค้าฉันต้องการส่งอีเมลไปที่อื่น

ฉันไม่ปรึกษารายการมากกว่าที่http://www.nicksays.co.uk/magento-events-cheat-sheet-1-7/แต่ไม่มีอะไรดูเหมือนเหตุการณ์สำหรับการเปลี่ยนรหัสผ่าน


มีความคิดใดที่ผู้สังเกตการณ์ / เหตุการณ์ที่จะใช้เมื่อลูกค้ารีเซ็ตรหัสผ่านโดยใช้/customer/account/resetpassword/?id=ab&token=xyz?
oschloebe

คำตอบ:


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

มันใช้งานได้แล้ว :-) ฉันลองใช้วิธีการหลายอย่างและฟังก์ชั่นตัวช่วยเพื่อรับรหัสผ่าน แต่ทั้งหมดที่ฉันสามารถเรียกคืนได้คือแฮชรหัสผ่าน ขอบคุณอีกครั้ง!
oschloebe

อย่าทำสิ่งแปลก ๆ ด้วยรหัสผ่านเช่นการบันทึกในแบบธรรมดาหรือไม่ดี crypto ;-)
Fabian Blechschmidt

1
ฉันจะไม่สัญญา! เพียงส่งไปที่ PRISM ;-)
oschloebe

สิ่งนี้ใช้ไม่ได้กับรหัสผ่านที่รีเซ็ตเนื่องจากมีเพียงpasswordและconfirmationในโพสต์ข้อมูล ทดสอบกับ v1.9
pHiL

5

มีลักษณะเป็นรหัส

คุณสามารถใช้customer_save_afterกิจกรรมและตรวจสอบได้

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

บางทีค่านี้อาจจะถูกลบไปแล้วคุณต้องใช้save_beforeแต่ฉันแนะนำให้ส่งจดหมายหลังจากการบันทึก ดังนั้นหากค่านี้ไม่สามารถอ่านได้ในเหตุการณ์หลังจากนั้นให้คัดลอกไปยังแอตทริบิวต์อื่นเพื่อให้มีค่าด้วยตัวเองในภายหลังเหตุการณ์


ขอบคุณมาก เท่าที่ฉันสามารถเห็นเหตุการณ์ก็ถูกเรียกเมื่อลูกค้าลงทะเบียนเรียบร้อยแล้ว มีวิธี / วิธีที่ฉันสามารถตรวจสอบว่าลูกค้าได้ลงทะเบียนไปแล้วและเปลี่ยนรหัสผ่านจริงหรือไม่?
oschloebe

ในเหตุการณ์ _before คุณสามารถตรวจสอบว่ามี ID อยู่บนวัตถุอยู่แล้วหรือไม่
Fabian Blechschmidt

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')เป็นโมฆะในเหตุการณ์นี้ ยังอยู่ใน predispatch passwordและconfirmationมีอยู่ในMage::app()->getRequest()->getParams()สรรพสินค้าใหญ่ (ทดสอบกับ v1.9)
pH
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.