Skip to content

Commit 143913d

Browse files
Handle magento events (#1)
* Handle new account without password event. * Handle forgot password, reset password events.
1 parent d32562c commit 143913d

File tree

7 files changed

+88
-5
lines changed

7 files changed

+88
-5
lines changed

Oracle/Contact/Observer/AfterCustomerSaveObserver.php

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,24 @@
77

88
namespace Oracle\Contact\Observer;
99

10-
class AfterCustomerSaveObserver extends ObserverAbstract
10+
class AfterCustomerSaveObserver extends CustomerObserverAbstract
1111
{
1212
/**
1313
* @see parent
1414
*/
1515
public function execute(\Magento\Framework\Event\Observer $observer)
1616
{
17+
if($this->_request != null && $this->_request->getModuleName() == "customer"){
18+
if($this->_request->getActionName() == "resetpasswordpost"){
19+
return;
20+
}
21+
if($this->_request->getActionName() == "resetPassword"){
22+
$observer->setData("resetPassword", true);
23+
}
24+
if($this->_request->getActionName() == "forgotpasswordpost"){
25+
$observer->setData("forgotPassword", true);
26+
}
27+
}
1728
$this->_observer->pushChanges($observer);
1829
}
1930
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<?php
2+
/*
3+
* Copyright © 2021, 2022 Oracle and/or its affiliates.
4+
*
5+
* Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl.
6+
*/
7+
8+
namespace Bronto\Contact\Observer;
9+
10+
abstract class CustomerObserverAbstract implements \Magento\Framework\Event\ObserverInterface
11+
{
12+
protected $_observer;
13+
protected $_request;
14+
15+
/**
16+
* @param \Bronto\Contact\Model\Observer
17+
*/
18+
public function __construct(
19+
\Bronto\Contact\Model\Observer $observer,
20+
\Magento\Framework\App\RequestInterface $req
21+
) {
22+
$this->_observer = $observer;
23+
$this->_request = $req;
24+
}
25+
}

Oracle/M2/Advanced/ExtensionAbstract.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,7 @@ protected function _validateMessage($dataType, $dataAction, $objectType)
245245
return true;
246246
if($dataType=='order' && $dataAction=='delete' && in_array("order_cancellation",$objectType))
247247
return true;
248-
if($dataType=='contact' && $dataAction=='add' && in_array("customer_account_welcome",$objectType))
248+
if($dataType=='contact' && $dataAction=='add' && in_array("customer_account_welcome",$objectType) || in_array("new_account_without_password", $objectType)))
249249
return true;
250250
if($dataType=='cart' && in_array("cart_event",$objectType))
251251
return true;

Oracle/M2/Connector/Discovery/ExtensionPushEventAbstract.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,12 @@ public function pushChanges($observer)
6969
if (is_null($storeId) || $storeId === false) {
7070
$storeId = true;
7171
}
72+
if($observer->hasData("resetPassword")) {
73+
$object->setData("resetPassword", $observer->getData("resetPassword"));
74+
}
75+
if($observer->hasData("forgotPassword")) {
76+
$object->setData("forgotPassword", $observer->getData("forgotPassword"));
77+
}
7278
$this->_pushLogic->pushEvent($object, $storeId);
7379
}
7480

Oracle/M2/Contact/Event/Source.php

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,9 @@ public function create($customer)
3333
$this->getEventType(),
3434
$this->action($customer),
3535
$customer->getId()
36-
])
36+
]),
37+
'resetPassword' => $customer->hasData("resetPassword"),
38+
'forgotPassword' => $customer->hasData("forgotPassword")
3739
];
3840
}
3941

@@ -71,4 +73,13 @@ public function transform($customer)
7173
];
7274
}
7375
}
76+
77+
public function transformForEvent($customer, $eventName) {
78+
return [
79+
'email' => $customer->getEmail(),
80+
'status' => 'transactional',
81+
'fields' => $this->_helper->getFieldsForModel($customer, $customer->getStore(), 'contact', $eventName)
82+
];
83+
}
84+
7485
}

Oracle/M2/Contact/ExtensionAbstract.php

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,13 @@ public function transformEvent($observer)
279279
} else {
280280
$customer = $this->_customerRepo->getById($event['id']);
281281
if ($customer) {
282-
$data = $this->_source->transform($customer);
282+
if($event['resetPassword']) {
283+
$data = $this->_source->transformForEvent($customer, "resetPassword");
284+
} elseif ($event['forgotPassword']) {
285+
$data = $this->_source->transformForEvent($customer, "forgotPassword");
286+
} else {
287+
$data = $this->_source->transform($customer);
288+
}
283289
}
284290
}
285291
$transform->setContact($data);

Oracle/M2/Contact/SettingsAbstract.php

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,10 +102,18 @@ public function getAttributeFilters()
102102
return array_combine(self::$_attributeKeys, $attributes);
103103
}
104104

105+
private function buildNewAccountResetPasswordURL($object, $storeId) {
106+
return $this->_storeManager->getStore($storeId)->getBaseUrl().'customer/account/createPassword/?id='.$object->getId().'&token='.$object->getData('rp_token');
107+
}
108+
109+
private function buildResetPasswordURL($object, $storeId) {
110+
return $this->_storeManager->getStore($storeId)->getBaseUrl().'customer/account/createPassword/?token='.$object->getData('rp_token');
111+
}
112+
105113
/**
106114
* @see parent
107115
*/
108-
public function getFieldsForModel($object, $storeId, $type = 'contact')
116+
public function getFieldsForModel($object, $storeId, $type = 'contact', $eventName = '')
109117
{
110118
$fields = [];
111119

@@ -125,6 +133,22 @@ public function getFieldsForModel($object, $storeId, $type = 'contact')
125133
'fieldId' => 'entityId',
126134
'content' => $object->getEntityId()
127135
];
136+
if($object->getPasswordHash() == null) {
137+
$fields[] = [
138+
'fieldId' => 'newAccountResetPasswordURL',
139+
'content' => $this->buildNewAccountResetPasswordURL($object, $storeId)
140+
];
141+
} elseif($eventName == "resetPassword") {
142+
$fields[] = [
143+
'fieldId' => 'resetPasswordURL',
144+
'content' => $this->buildResetPasswordURL($object, $storeId)
145+
];
146+
} elseif($eventName == "forgotPassword") {
147+
$fields[] = [
148+
'fieldId' => 'forgotPasswordURL',
149+
'content' => $this->buildResetPasswordURL($object, $storeId)
150+
];
151+
}
128152
}
129153

130154
$store = $this->_storeManager->getStore($storeId);

0 commit comments

Comments
 (0)