1

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();
        }
  • please post your code for customer account creation – Keyur Shah Jan 11 at 9:06
  • @KeyurShah Please have a look at my updated question – sreelakshmi Jan 11 at 9:11

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Browse other questions tagged or ask your own question.