public function connectByCreatingAccount($facebookId, $token, $email, $firstName, $lastName) { $customerDetails = array('firstname' => $firstName, 'lastname' => $lastName, 'email' => $email, 'sendemail' => 0, 'confirmation' => 0, 'custom_attributes' => array(array(\Magento\Framework\Service\Data\AttributeValue::ATTRIBUTE_CODE => 'inchoo_socialconnect_fid', \Magento\Framework\Service\Data\AttributeValue::VALUE => $facebookId), array(\Magento\Framework\Service\Data\AttributeValue::ATTRIBUTE_CODE => 'inchoo_socialconnect_ftoken', \Magento\Framework\Service\Data\AttributeValue::VALUE => serialize($token)))); $customer = $this->_customerBuilder->populateWithArray($customerDetails)->create(); // Save customer $customerDetails = $this->_customerDetailsBuilder->setCustomer($customer)->setAddresses(null)->create(); $customerDataObject = $this->_customerAccountService->createCustomer($customerDetails); /* @var $customer \Magento\Customer\Service\V1\Data\Customer */ // Convert data object to customer model $customer = $this->_converter->createCustomerModel($customerDataObject); /* @var $customer \Magento\Customer\Model\Customer */ $customer->sendNewAccountEmail('confirmed', ''); $this->_customerSession->setCustomerAsLoggedIn($customer); }
/** * @param CustomerData $customer * @return $this */ public function setCustomerDataAsLoggedIn($customer) { $this->_httpContext->setValue(\Magento\Customer\Helper\Data::CONTEXT_AUTH, true, false); $this->setCustomerData($customer); $customerModel = $this->_converter->createCustomerModel($customer); $this->setCustomer($customerModel); $this->_eventManager->dispatch('customer_login', array('customer' => $customerModel)); $this->_eventManager->dispatch('customer_data_object_login', ['customer' => $customer]); return $this; }
/** * {@inheritdoc} */ public function validateCustomerData(Data\Customer $customer, array $attributes = []) { $customerErrors = $this->validator->validateData(\Magento\Framework\Service\EavDataObjectConverter::toFlatArray($customer), $attributes, 'customer'); if ($customerErrors !== true) { return $this->customerValidationResultsBuilder->setIsValid(false)->setMessages($this->validator->getMessages())->create(); } $customerModel = $this->converter->createCustomerModel($customer); $result = $customerModel->validate(); if (true !== $result && is_array($result)) { return $this->customerValidationResultsBuilder->setIsValid(false)->setMessages($result)->create(); } return $this->customerValidationResultsBuilder->setIsValid(true)->setMessages([])->create(); }