10 use Magento\Customer\Model\Data\CustomerSecureFactory;
24 private $customerFactory;
29 private $customerSecureFactory;
34 private $customerRegistryById = [];
39 private $customerRegistryByEmail = [];
44 private $customerSecureRegistryById = [];
49 private $storeManager;
59 CustomerFactory $customerFactory,
60 CustomerSecureFactory $customerSecureFactory,
64 $this->customerSecureFactory = $customerSecureFactory;
77 if (isset($this->customerRegistryById[
$customerId])) {
88 $this->customerRegistryByEmail[$emailKey] =
$customer;
104 $websiteId = $this->storeManager->getStore()->getWebsiteId();
107 if (isset($this->customerRegistryByEmail[$emailKey])) {
108 return $this->customerRegistryByEmail[$emailKey];
112 $customer = $this->customerFactory->create();
121 throw new NoSuchEntityException(
123 'No such entity with %fieldName = %fieldValue, %field2Name = %field2Value',
125 'fieldName' =>
'email',
127 'field2Name' =>
'websiteId',
134 $this->customerRegistryByEmail[$emailKey] =
$customer;
148 if (isset($this->customerSecureRegistryById[
$customerId])) {
149 return $this->customerSecureRegistryById[
$customerId];
154 $customerSecure = $this->customerSecureFactory->create();
155 $customerSecure->setPasswordHash(
$customer->getPasswordHash());
156 $customerSecure->setRpToken(
$customer->getRpToken());
157 $customerSecure->setRpTokenCreatedAt(
$customer->getRpTokenCreatedAt());
158 $customerSecure->setDeleteable(
$customer->isDeleteable());
159 $customerSecure->setFailuresNum(
$customer->getFailuresNum());
160 $customerSecure->setFirstFailure(
$customer->getFirstFailure());
161 $customerSecure->setLockExpires(
$customer->getLockExpires());
162 $this->customerSecureRegistryById[
$customer->getId()] = $customerSecure;
164 return $customerSecure;
175 if (isset($this->customerRegistryById[
$customerId])) {
179 unset($this->customerRegistryByEmail[$emailKey]);
181 unset($this->customerSecureRegistryById[
$customerId]);
195 $websiteId = $this->storeManager->getStore()->getWebsiteId();
200 $customer = $this->customerRegistryByEmail[$emailKey];
201 unset($this->customerRegistryByEmail[$emailKey]);
202 unset($this->customerRegistryById[
$customer->getId()]);
203 unset($this->customerSecureRegistryById[
$customer->getId()]);
229 $this->customerRegistryByEmail[$emailKey] =
$customer;
__construct(CustomerFactory $customerFactory, CustomerSecureFactory $customerSecureFactory, StoreManagerInterface $storeManager)
static singleField($fieldName, $fieldValue)
getEmailKey($customerEmail, $websiteId)