고객 비밀번호 변경을위한 이벤트 / 관찰자?


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

작동합니다. :-) 암호를 얻기 위해 여러 가지 방법과 도우미 함수를 시도했지만 암호 해시 만 검색 할 수 있었지만 읽을 수 있어야했으며 POST 객체가 제공했습니다. 다시 감사합니다!
oschloebe

암호로 평범한 텍스트 나 나쁜 암호로 저장하는 것과 같이 이상한 일을하지 마십시오 ;-)
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하지만 저장 후 메일을 보내는 것이 좋습니다. 따라서 after 이벤트에서이 값을 읽을 수없는 경우 다른 속성으로 복사하여 after 이벤트에서 직접 가져 오십시오.


지금까지 감사합니다. 내가 볼 수있는 한 고객이 성공적으로 등록되면 이벤트도 시작됩니다. 고객이 이미 등록되어 있고 비밀번호가 실제로 변경되었는지 확인할 수있는 방법 / 방법이 있습니까?
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')이 이벤트에서는 null입니다. 사전 배포에도 있습니다. passwordconfirmation에서 사용할 수 있습니다 Mage::app()->getRequest()->getParams()상점. (v1.9로 테스트)
pH
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.