Skip to main content

Magento 2: Change Customer Password programmatically

Most programmer need to change sometime the password of one customer programmatically, in this wiki I will give you a code to change the password programmatically

 

 

<?php
use Magento\Framework\AppInterface;
try {
    require_once __DIR__ . '/app/bootstrap.php';

} catch (\Exception $e) {
    echo 'Autoload error: ' . $e->getMessage();
    exit(1);
}
try{
    $bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $_SERVER);
    $objectManager = $bootstrap->getObjectManager();
    $appState = $objectManager->get('\Magento\Framework\App\State');

    $customerRepositoryInterface = $objectManager->get('\Magento\Customer\Api\CustomerRepositoryInterface');
    $customerRegistry = $objectManager->get('\Magento\Customer\Model\CustomerRegistry');
    $encryptor = $objectManager->get('\Magento\Framework\Encryption\EncryptorInterface');
    $appState->setAreaCode('frontend');

    $customerId = 1; // here assign your customer id
    $password = "custom_password"; // set your custom password
    $customer = $customerRepositoryInterface->getById($customerId); // _customerRepositoryInterface is an instance of \Magento\Customer\Api\CustomerRepositoryInterface
    $customerSecure = $customerRegistry->retrieveSecureData($customerId); // _customerRegistry is an instance of \Magento\Customer\Model\CustomerRegistry
    $customerSecure->setRpToken(null);
    $customerSecure->setRpTokenCreatedAt(null);
    $customerSecure->setPasswordHash($encryptor->getHash($password, true)); // here _encryptor is an instance of \Magento\Framework\Encryption\EncryptorInterface
    $customerRepositoryInterface->save($customer);
    echo 'Successfully Changes Your Password.';
}
catch(\Exception $e){
    print_r($e->getMessage());
}