/**
  * 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;
 }
Example #2
0
 /**
  * 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];
 }