Trying to override authenticate
method of \Magento\Customer\Model\AccountManagement
. Here is the code:
namespace namespace\module\Model\Customer;
class AccountManagement extends \Magento\Customer\Model\AccountManagement
{
private $customerFactory;
private $validationResultsDataFactory;
private $eventManager;
private $storeManager;
private $mathRandom;
private $validator;
private $addressRepository;
private $customerMetadataService;
protected $logger;
private $encryptor;
private $customerRegistry;
private $configShare;
protected $stringHelper;
private $customerRepository;
private $scopeConfig;
private $transportBuilder;
protected $dataProcessor;
protected $registry;
protected $customerViewHelper;
protected $dateTime;
protected $objectFactory;
protected $extensibleDataObjectConverter;
protected $customerModel;
protected $authentication;
private $emailNotification;
private $eavValidator;
public function __construct(
\Magento\Customer\Model\CustomerFactory $customerFactory,
ManagerInterface $eventManager,
StoreManagerInterface $storeManager,
Random $mathRandom,
Validator $validator,
ValidationResultsInterfaceFactory $validationResultsDataFactory,
AddressRepositoryInterface $addressRepository,
CustomerMetadataInterface $customerMetadataService,
CustomerRegistry $customerRegistry,
PsrLogger $logger,
Encryptor $encryptor,
ConfigShare $configShare,
StringHelper $stringHelper,
CustomerRepositoryInterface $customerRepository,
ScopeConfigInterface $scopeConfig,
TransportBuilder $transportBuilder,
DataObjectProcessor $dataProcessor,
Registry $registry,
CustomerViewHelper $customerViewHelper,
DateTime $dateTime,
CustomerModel $customerModel,
ObjectFactory $objectFactory,
ExtensibleDataObjectConverter $extensibleDataObjectConverter
) {
$this->customerFactory = $customerFactory;
$this->eventManager = $eventManager;
$this->storeManager = $storeManager;
$this->mathRandom = $mathRandom;
$this->validator = $validator;
$this->validationResultsDataFactory = $validationResultsDataFactory;
$this->addressRepository = $addressRepository;
$this->customerMetadataService = $customerMetadataService;
$this->customerRegistry = $customerRegistry;
$this->logger = $logger;
$this->encryptor = $encryptor;
$this->configShare = $configShare;
$this->stringHelper = $stringHelper;
$this->customerRepository = $customerRepository;
$this->scopeConfig = $scopeConfig;
$this->transportBuilder = $transportBuilder;
$this->dataProcessor = $dataProcessor;
$this->registry = $registry;
$this->customerViewHelper = $customerViewHelper;
$this->dateTime = $dateTime;
$this->customerModel = $customerModel;
$this->objectFactory = $objectFactory;
$this->extensibleDataObjectConverter = $extensibleDataObjectConverter;
parent::__construct($customerFactory,$eventManager,$storeManager, $mathRandom,$validator,$validationResultsDataFactory,
$addressRepository,$customerMetadataService ,$customerRegistry,$logger,$encryptor,$configShare,$stringHelper,$customerRepository,
$scopeConfig,$transportBuilder,$dataProcessor,$registry,$customerViewHelper,$dateTime,$customerModel,$objectFactory,$extensibleDataObjectConverter);
}
But i am getting this error
Fatal error: Uncaught TypeError: Argument 1 passed to namespace\module\Model\Customer\AccountManagement::__construct() must be an instance of namespace\module\Model\Customer\CustomerFactory, instance of Magento\Framework\Event\Manager\Proxy given.
I think the reason is its a factory class or private. Any ideas?
\Magento\Customer\Model\CustomerFactory
but ObjectManager looking fornamespace\module\Model\Customer\CustomerFactory
instead. Not sure about why it passesProxy
class instead but you definitely need to fix class name.