ग्राहक पासवर्ड बदलने के लिए घटना / प्रेक्षक?


10

मैं ग्राहकों के पासवर्ड बदलने की स्थिति में हुक करने का एक तरीका ढूंढ रहा हूं। इसलिए यदि कोई ग्राहक के दृश्य में पासवर्ड बदलता है, तो मैं कहीं ई-मेल भेजना चाहूंगा।

मैंने http://www.nicksays.co.uk/magento-events-cheat-sheet-1-7/ पर सूची से परामर्श किया, लेकिन पासवर्ड बदलने के लिए एक घटना की तरह कुछ भी नहीं दिखता है।


कोई भी विचार है कि जब ग्राहक अपने पासवर्ड का उपयोग करके रीसेट करता है तो पर्यवेक्षक / घटना का क्या उपयोग करता है /customer/account/resetpassword/?id=ab&token=xyz?
ऑस्क्लोएबे

जवाबों:


9

फैबियन ब्लेस्च्मिड्ट के लिए धन्यवाद, मैं निम्नलिखित के साथ आया जो मेरे लिए काम करता है (घटना का उपयोग करके 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;
}

मुझे पोस्ट पर अनुरोध पसंद नहीं है, लेकिन अगर यह काम करता है, तो महान :-)
फेबियन बलेचस्मिड

यह काम करता है, हाँ। :-) मैंने पासवर्ड प्राप्त करने के लिए कई विधियों की मदद की है, लेकिन सभी को मैं फिर से प्राप्त करने में सक्षम था पासवर्ड हैश था, लेकिन मुझे इसकी आवश्यकता थी कि यह पठनीय है और यही POST ऑब्जेक्ट की पेशकश करता है। एक बार फिर धन्यवाद!
10

पासवर्ड के साथ अजीब चीजें न करें, जैसे कि इसे प्लेनटेक्स्ट या खराब क्रिप्टो में सेव करना ;-)
Fabian Blechschmidt

1
मैं वादा नहीं करेगा! बस इसे PRISM को भेजना है। ;-)
oschloebe

यह रीसेट पासवर्ड के लिए काम नहीं करता है क्योंकि केवल passwordऔर confirmationपोस्ट डेटा में है। v1.9 के साथ परीक्षण किया गया
पीएचआईएल

5

कोड में एक नज़र है।

आप customer_save_afterघटना का उपयोग कर सकते हैं और सिर्फ जांच कर सकते हैं

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

शायद यह मान रीसेट हो गया है, फिर आपको उपयोग करना होगा save_before, लेकिन मैं बचत के बाद मेल भेजने की सलाह देता हूं। इसलिए यदि इस घटना के बाद यह मूल्य पठनीय नहीं है, तो इसे किसी अन्य विशेषता के लिए कॉपी करें, ताकि बाद के कार्यक्रम में इसे हाथ में लिया जा सके।


अब तक धन्यवाद। जहां तक ​​मैं देख सकता हूं कि जब ग्राहक सफलतापूर्वक पंजीकृत हो जाता है तो वह घटना भी शुरू हो जाती है। क्या कोई ऐसा तरीका / तरीका है जो मैं जांच सकता हूं कि क्या ग्राहक पहले से पंजीकृत था और पासवर्ड वास्तव में बदल गया था?
12

_before घटना में आप यह जांच सकते हैं कि क्या कोई आईडी पहले से ही वस्तु पर मौजूद है
फैबियन ब्लेसस्मिड

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

थोड़ा और अधिक क्लीनर और "सुरक्षित" पासवर्ड के साथ के बारे में faffing की तुलना में, मुझे लगता है!


Mage::app()->getRequest()->getParam('id')इस घटना में अशक्त है। प्रीस्पेक्ट में भी। passwordऔर थियो confirmationमें उपलब्ध है Mage::app()->getRequest()->getParams()। (
V1.9 के
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.