_customerSession = $customerSession; $this->customerRepository = $customerRepository; $this->accountManagement = $accountManagement; parent::__construct($context); } /** * Make sure customer is valid, if logged in * * By default will add error messages and redirect to customer edit form * * @param bool $redirect - stop dispatch and redirect? * @param bool $addErrors - add error messages? * @return bool|\Magento\Framework\Controller\Result\Redirect */ protected function _preDispatchValidateCustomer($redirect = true, $addErrors = true) { try { $customer = $this->customerRepository->getById($this->_customerSession->getCustomerId()); } catch (NoSuchEntityException $e) { return true; } if (isset($customer)) { $validationResult = $this->accountManagement->validate($customer); if (!$validationResult->isValid()) { if ($addErrors) { foreach ($validationResult->getMessages() as $error) { $this->messageManager->addErrorMessage($error); } } if ($redirect) { $this->_actionFlag->set('', self::FLAG_NO_DISPATCH, true); return $this->resultRedirectFactory->create()->setPath('customer/account/edit'); } return false; } } return true; } }