I don't think password activation is default feature of Magento 2.
To allow customer account creation without requiring Emails Confirmation, you can disable this feature from Stores > Configuration > Customers > Customer Configuration > Create New Account Options > Require Emails Confirmation.
Once you disable this feature, you can create customer account directly from the front end.
If you do not have access to admin panel, then here is the code for simple module, which will allow you to create customer account from CLI command:
//file: app/code/XTeam/Customer/registration.php
<?php
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE,
'XTeam_Customer',
__DIR__
);
//file: app/code/XTeam/Customer/etc/module.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/Module/etc/module.xsd">
<module name="XTeam_Customer"/>
</config>
//file: app/code/XTeam/Customer/etc/di.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<type name="Magento\Framework\Console\CommandList">
<arguments>
<argument name="commands" xsi:type="array">
<item name="customer_user_create" xsi:type="object">XTeam\Customer\Console\Command\CustomerCreateCommand</item>
</argument>
</arguments>
</type>
</config>
//file: app/code/XTeam/Customer/Console/Command/CustomerCreateCommand.php
<?php
namespace XTeam\Customer\Console\Command;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Magently\Customer\Helper\Customer;
class CustomerUserCreateCommand extends Command
{
protected $customerHelper;
public function __construct(Customer $customerHelper)
{
$this->customerHelper = $customerHelper;
parent::__construct();
}
protected function configure()
{
$this
->setName('customer:user:create')
->setDescription('Create new customer')
->setDefinition($this->getOptionsList());
}
protected function execute(InputInterface $input, OutputInterface $output)
{
$output->writeln('<info>Creating new user...</info>');
$this->customerHelper->setData($input);
$this->customerHelper->execute();
$output->writeln('');
$output->writeln('<info>User created with the following data:</info>');
$output->writeln('<comment>Customer ID: ' . $this->customerHelper->getCustomerId());
$output->writeln('<comment>Customer Website ID ' . $input->getOption(Customer::KEY_WEBSITE));
$output->writeln('<comment>Customer First Name: ' . $input->getOption(Customer::KEY_FIRSTNAME));
$output->writeln('<comment>Customer Last Name: ' . $input->getOption(Customer::KEY_LASTNAME));
$output->writeln('');
$output->writeln('<comment>Customer Email: ' . $input->getOption(Customer::KEY_EMAIL));
$output->writeln('<comment>Customer Password: ' . $input->getOption(Customer::KEY_PASSWORD));
}
protected function getOptionsList()
{
return [
new InputOption(Customer::KEY_FIRSTNAME, null, InputOption::VALUE_REQUIRED, '(Required) Customer first name'),
new InputOption(Customer::KEY_LASTNAME, null, InputOption::VALUE_REQUIRED, '(Required) Customer last name'),
new InputOption(Customer::KEY_EMAIL, null, InputOption::VALUE_REQUIRED, '(Required) Customer email'),
new InputOption(Customer::KEY_PASSWORD, null, InputOption::VALUE_REQUIRED, '(Required) Customer password'),
new InputOption(Customer::KEY_WEBSITE, null, InputOption::VALUE_REQUIRED, '(Required) Website ID'),
new InputOption(Customer::KEY_SENDEMAIL, 0, InputOption::VALUE_OPTIONAL, '(1/0) Send email? (default 0)')
];
}
}
//file: app/code/XTeam/Customer/Helper/Customer.php
<?php
namespace XTeam\Customer\Helper;
use \Magento\Framework\App\Helper\Context;
use \Magento\Store\Model\StoreManagerInterface;
use \Magento\Framework\App\State;
use \Magento\Customer\Model\CustomerFactory;
use \Symfony\Component\Console\Input\Input;
class Customer extends \Magento\Framework\App\Helper\AbstractHelper
{
const KEY_EMAIL = 'customer-email';
const KEY_FIRSTNAME = 'customer-firstname';
const KEY_LASTNAME = 'customer-lastname';
const KEY_PASSWORD = 'customer-password';
const KEY_WEBSITE = 'website';
const KEY_SENDEMAIL = 'send-email';
protected $storeManager;
protected $state;
protected $customerFactory;
protected $data;
protected $customerId;
public function __construct(
Context $context,
StoreManagerInterface $storeManager,
State $state,
CustomerFactory $customerFactory
) {
$this->storeManager = $storeManager;
$this->state = $state;
$this->customerFactory = $customerFactory;
parent::__construct($context);
}
public function setData(Input $input)
{
$this->data = $input;
return $this;
}
public function execute()
{
$this->state->setAreaCode('frontend');
$customer = $this->customerFactory->create();
$customer
->setWebsiteId($this->data->getOption(self::KEY_WEBSITE))
->setEmail($this->data->getOption(self::KEY_EMAIL))
->setFirstname($this->data->getOption(self::KEY_FIRSTNAME))
->setLastname($this->data->getOption(self::KEY_LASTNAME))
->setPassword($this->data->getOption(self::KEY_PASSWORD))
->setConfirmation(1);
$customer->save();
$this->customerId = $customer->getId();
if($this->data->getOption(self::KEY_SENDEMAIL)) {
$customer->sendNewAccountEmail();
}
}
public function getCustomerId()
{
return (int)$this->customerId;
}
}
Now let’s install the module:
php bin/magento setup:upgrade
Now, let’s add a new user according to the usage pattern.
php bin/magento customer:user:create --customer-firstname="John" --customer-lastname="Doe" --customer-email="[email protected]" --customer-password="john123#" --website="1"
Let me know if it helped.