문제

I have created customer using following links:

The customer is created and I can see it in the customers list using admin account.

But I am unable to login into the storefront using the provided credentials which I used during programatically creation process. When I try to login, I get following error:

The account sign-in was incorrect or your account is disabled temporarily. Please wait and try again later.

I have a clue when I checked the database, but I could not find the actual issue. The clue is for the customer entry in customer_entity table:

  1. store_id & website_id is 0 while normal customers have non-zero value.
  2. created_in column value is "Admin" while customer has value "Default store view".
  3. rp_token and rp_token columns contains NULL value while normal customer have some values.

I am unable to trace the exact issue. And suggest what should be the solution..

Thanks in advance!

도움이 되었습니까?

해결책

I think the problem is the store_id, website_id being zero.
At least in Magento 1, a customer associated to the admin website could not login in the frontend. It was there just for creating orders associated to him/her in the backend.
I wrote a few more words about it (but for magento 1) in here: Customer Associated with the Admin Store

But you can simply test if this is the case by changing the values of store_id and website_id to some valid values.
Bonus: rp_token is used for requesting a new password using the "Forgot my password" link. so it's normal to be null for newly created customers.

다른 팁

You should not use object manager. You can now use the account management api to create customers very easily.

Try this way:

<?php
/**
 * @category    Magento 2
 * @author      Mattia Kozianowski
 */
declare(strict_types=1);

namespace Vendor\Module;

use Magento\Customer\Api\Data\CustomerInterface;

/**
 * Class CreateCustomer
 *
 * @package Vendor\Module\Controller\Account
 */
class CreateCustomer
{
    /**
     * @var \Magento\Customer\Api\Data\CustomerInterfaceFactory
     */
    protected $customer;

    /**
     * @var \Magento\Customer\Api\AccountManagementInterface
     */
    protected $accountManagement;

    /**
     * CreateCustomer constructor.
     *
     * @param \Magento\Customer\Api\AccountManagementInterface $accountManagement
     * @param \Magento\Customer\Api\Data\CustomerInterfaceFactory $customer
     */
    public function __construct(
        \Magento\Customer\Api\AccountManagementInterface $accountManagement,
        \Magento\Customer\Api\Data\CustomerInterfaceFactory $customer
    ) {
        $this->customer = $customer;
        $this->accountManagement = $accountManagement;
    }

    /**
     * @return \Magento\Customer\Api\Data\CustomerInterface
     * @throws \Magento\Framework\Exception\LocalizedException
     */
    public function createCustomer(): CustomerInterface
    {
        /** @var \Magento\Customer\Api\Data\CustomerInterface $customer */
        $customer = $this->customer->create();
        $customer
            ->setFirstname('name')
            ->setLastname('lastname')
            ->setEmail('email@test.com')
            ->setStoreId(1)
            /*SET ALL YOUR DATA HERE*/
        ;
        $password = 'password123';
        return $this->accountManagement->createAccount($customer, $password);
    }
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 magento.stackexchange
scroll top