I'm trying to create customer account manually in my custom module. Customer account is getting created successfully and welcome email is sent to the new customer using $customer->sendNewAccountEmail();
. But On clicking the forgot password link I found the rp_token is missing in the template.
If we're programmatically creating customer_entity table is not updating. If the customer is registered via Magento default create account page in the frontend the rp_token is updating successfully.
How to create and insert rp_token on creating customer account programmatically? See my customer creation code below
$orderArray = $this->getRequest()->getPost('order');
$sellerComment = $orderArray['comment']['customer_note'];
$id = $this->convert->_getSession()->getCustomerId();
$websiteId = $this->_storeManager->getStore()->getId();
$customerEmail = $orderArray['account']['email'];
$customerFirstName = $orderArray['billing_address']['firstname'];
$customerLastName = $orderArray['billing_address']['lastname'];
$customerCompany = $orderArray['billing_address']['company'];
$customerCity = $orderArray['billing_address']['city'];
$customerCountryId = $orderArray['billing_address']['country_id'];
$customerPostcode = $orderArray['billing_address']['postcode'];
$customerTelephone = $orderArray['billing_address']['telephone'];
$customerFax = $orderArray['billing_address']['fax'];
$customerStreetArray = $orderArray['billing_address']['street'];
$customerStreet = implode(',', $customerStreetArray);
$customerID = '';
/* if new customer */
if ($id == 0) {
$chars = \Magento\Framework\Math\Random::CHARS_LOWERS
. \Magento\Framework\Math\Random::CHARS_UPPERS
. \Magento\Framework\Math\Random::CHARS_DIGITS;
$password = $this->mathRandom->getRandomString(10, $chars);
$customer = $this->_customerFactory->create();
$customer->setWebsiteId($websiteId);
$customer->setEmail($customerEmail);
$customer->setFirstname($customerFirstName);
$customer->setLastname($customerLastName);
$customer->setPassword($password);
$customer->setForceConfirmed(true);
$customer->save();
$customerID = $customer->getId();
$address = $this->_addressFactory->create();
$address->setCustomerId($customer->getId())
->setFirstname($customerFirstName)
->setLastname($customerLastName)
->setCountryId($customerCountryId)
->setPostcode($customerPostcode)
->setCity($customerCity)
->setTelephone($customerTelephone)
->setFax($customerFax)
->setCompany($customerCompany)
->setStreet($customerStreet)
->setIsDefaultBilling('1')
->setIsDefaultShipping('1')
->setSaveInAddressBook('1');
$address->save();
$customer->sendNewAccountEmail();
}