/** * Find a customer * * @param string $attributeValue Attribute Value * @return bool|\Magento\Customer\Api\Data\CustomerInterface */ private function findCustomerByLoginAttribute($attributeValue) { // Retrieve the customer login attribute and check if valid $loginAttribute = $this->advancedLoginConfigProvider->getLoginAttribute(); if (false === $loginAttribute) { return false; } // Add website filter if customer accounts are shared per website $websiteIdFilter = false; if ($this->advancedLoginConfigProvider->getCustomerAccountShareScope() == Share::SHARE_WEBSITE) { $websiteIdFilter[] = $this->filterBuilder->setField('website_id')->setConditionType('eq')->setValue($this->storeManager->getStore()->getWebsiteId())->create(); } // Add customer attribute filter $customerNumberFilter[] = $this->filterBuilder->setField('customer_number')->setConditionType('eq')->setValue($attributeValue)->create(); // Build search criteria $searchCriteriaBuilder = $this->searchCriteriaBuilder->addFilters($customerNumberFilter); if ($websiteIdFilter) { $searchCriteriaBuilder->addFilters($websiteIdFilter); } $searchCriteria = $searchCriteriaBuilder->create(); // Retrieve the customer collection and return customer if there was exactly one customer found $collection = $this->customerRepository->getList($searchCriteria); if ($collection->getTotalCount() == 1) { return $collection->getItems()[0]; } return false; }
/** * Retrieve the email field config * * @return array */ public function getEmailFieldConfig() { switch ($this->advancedLoginConfigProvider->getLoginMode()) { case LoginMode::LOGIN_TYPE_ONLY_ATTRIBUTE: $label = $this->advancedLoginConfigProvider->getLoginAttributeLabel(); $type = 'text'; $dataValidate = "{required:true}"; break; case LoginMode::LOGIN_TYPE_BOTH: $label = 'Email / ' . $this->advancedLoginConfigProvider->getLoginAttributeLabel(); $type = 'text'; $dataValidate = "{required:true}"; break; default: $label = 'Email'; $type = 'email'; $dataValidate = "{required:true, 'validate-email':true}"; break; } return ['label' => $label, 'type' => $type, 'data_validate' => $dataValidate]; }