2

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 agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.