I have done like this,
here is di.xml from the path app/code/Vendor/Module/etc
<?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd"> <preference for="Magento\Customer\Controller\Account\CreatePost" type="Vendor\Module\Controller\Override\Account\CreatePost"/> </config>
here is CreatePost.php from the path app/code/Vendor/Module/Controller/Override/Account
<?php namespace Vendor\Module\Controller\Override\Account; use Magento\Customer\Api\CustomerRepositoryInterface as CustomerRepository; use Magento\Framework\App\Action\HttpPostActionInterface as HttpPostActionInterface; use Magento\Customer\Model\Account\Redirect as AccountRedirect; use Magento\Customer\Api\Data\AddressInterface; use Magento\Framework\Api\DataObjectHelper; use Magento\Framework\App\Action\Context; use Magento\Customer\Model\Session; use Magento\Framework\App\Config\ScopeConfigInterface; use Magento\Framework\App\CsrfAwareActionInterface; use Magento\Framework\App\ObjectManager; use Magento\Framework\App\Request\InvalidRequestException; use Magento\Framework\App\RequestInterface; use Magento\Framework\Controller\Result\Redirect; use Magento\Framework\Exception\LocalizedException; use Magento\Framework\Phrase; use Magento\Store\Model\StoreManagerInterface; use Magento\Customer\Api\AccountManagementInterface; use Magento\Customer\Helper\Address; use Magento\Framework\UrlFactory; use Magento\Customer\Model\Metadata\FormFactory; use Magento\Newsletter\Model\SubscriberFactory; use Magento\Customer\Api\Data\RegionInterfaceFactory; use Magento\Customer\Api\Data\AddressInterfaceFactory; use Magento\Customer\Api\Data\CustomerInterfaceFactory; use Magento\Customer\Model\Url as CustomerUrl; use Magento\Customer\Model\Registration; use Magento\Framework\Escaper; use Magento\Customer\Model\CustomerExtractor; use Magento\Framework\Exception\StateException; use Magento\Framework\Exception\InputException; use Magento\Framework\Data\Form\FormKey\Validator; use Magento\Customer\Controller\AbstractAccount; use Magento\Framework\Controller\ResultFactory; /** * @SuppressWarnings(PHPMD.CouplingBetweenObjects) */ class CreatePost extends \Magento\Customer\Controller\Account\CreatePost { /** * @var \Magento\Customer\Api\AccountManagementInterface */ protected $accountManagement; /** * @var \Magento\Customer\Helper\Address */ protected $addressHelper; /** * @var \Magento\Customer\Model\Metadata\FormFactory */ protected $formFactory; /** * @var \Magento\Newsletter\Model\SubscriberFactory */ protected $subscriberFactory; /** * @var \Magento\Customer\Api\Data\RegionInterfaceFactory */ protected $regionDataFactory; /** * @var \Magento\Customer\Api\Data\AddressInterfaceFactory */ protected $addressDataFactory; /** * @var \Magento\Customer\Model\Registration */ protected $registration; /** * @var \Magento\Customer\Api\Data\CustomerInterfaceFactory */ protected $customerDataFactory; /** * @var \Magento\Customer\Model\Url */ protected $customerUrl; /** * @var \Magento\Framework\Escaper */ protected $escaper; /** * @var \Magento\Customer\Model\CustomerExtractor */ protected $customerExtractor; /** * @var \Magento\Framework\UrlInterface */ protected $urlModel; /** * @var \Magento\Framework\Api\DataObjectHelper */ protected $dataObjectHelper; /** * @var Session */ protected $session; /** * @var AccountRedirect */ private $accountRedirect; /** * @var \Magento\Framework\Stdlib\Cookie\CookieMetadataFactory */ private $cookieMetadataFactory; /** * @var \Magento\Framework\Stdlib\Cookie\PhpCookieManager */ private $cookieMetadataManager; /** * @var Validator */ private $formKeyValidator; /** * @var CustomerRepository */ private $customerRepository; public function __construct( Context $context, Session $customerSession, ScopeConfigInterface $scopeConfig, StoreManagerInterface $storeManager, AccountManagementInterface $accountManagement, Address $addressHelper, UrlFactory $urlFactory, FormFactory $formFactory, SubscriberFactory $subscriberFactory, RegionInterfaceFactory $regionDataFactory, AddressInterfaceFactory $addressDataFactory, CustomerInterfaceFactory $customerDataFactory, CustomerUrl $customerUrl, Registration $registration, Escaper $escaper, CustomerExtractor $customerExtractor, DataObjectHelper $dataObjectHelper, AccountRedirect $accountRedirect, CustomerRepository $customerRepository, Validator $formKeyValidator = null ) { $this->session = $customerSession; $this->scopeConfig = $scopeConfig; $this->accountManagement = $accountManagement; $this->addressHelper = $addressHelper; $this->urlModel = $urlFactory->create(); $this->customerUrl = $customerUrl; $this->registration = $registration; $this->customerExtractor = $customerExtractor; $this->accountRedirect = $accountRedirect; $this->formKeyValidator = $formKeyValidator ?: ObjectManager::getInstance()->get(Validator::class); parent::__construct( $context, $customerSession, $scopeConfig, $storeManager, $accountManagement, $addressHelper, $urlFactory, $formFactory, $subscriberFactory, $regionDataFactory, $addressDataFactory, $customerDataFactory, $customerUrl, $registration, $escaper, $customerExtractor, $dataObjectHelper, $accountRedirect, $customerRepository ); } /** * Create customer account action. * * @SuppressWarnings(PHPMD.CyclomaticComplexity) * @throws InputException */ public function execute() { /** @var Redirect $resultRedirect */ $resultRedirect = $this->resultRedirectFactory->create(); if ($this->session->isLoggedIn() || !$this->registration->isAllowed()) { $resultRedirect->setPath('*/*/'); return $resultRedirect; } if (!$this->getRequest()->isPost() || !$this->formKeyValidator->validate($this->getRequest()) ) { $url = $this->urlModel->getUrl('*/*/login', ['_secure' => true]); return $this->resultRedirectFactory->create() ->setUrl($this->_redirect->error($url)); } $this->session->regenerateId(); try { $address = $this->extractAddress(); $addresses = $address === null ? [] : [$address]; $customer = $this->customerExtractor->extract('customer_account_create', $this->_request); $customer->setAddresses($addresses); $password = $this->getRequest()->getParam('password'); $confirmation = $this->getRequest()->getParam('password_confirmation'); $redirectUrl = $this->session->getBeforeAuthUrl(); $this->checkPasswordConfirmation($password, $confirmation); $extensionAttributes = $customer->getExtensionAttributes(); $extensionAttributes->setIsSubscribed($this->getRequest()->getParam('is_subscribed', false)); $customer->setExtensionAttributes($extensionAttributes); $customer = $this->accountManagement ->createAccount($customer, $password, $redirectUrl); $this->_eventManager->dispatch( 'customer_register_success', ['account_controller' => $this, 'customer' => $customer] ); $confirmationStatus = $this->accountManagement->getConfirmationStatus($customer->getId()); if ($confirmationStatus === AccountManagementInterface::ACCOUNT_CONFIRMATION_REQUIRED) { $this->messageManager->addSuccess(__( 'Registration completed. Please verify your account by clicking on the link sent on your registered email id.' )); //$url = $this->urlModel->getUrl('*/*/index', ['_secure' => true]); $resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT); $resultRedirect->setUrl($this->_redirect->getRefererUrl()); } else { $this->session->setCustomerDataAsLoggedIn($customer); $this->messageManager->addMessage($this->getMessageManagerSuccessMessage()); $requestedRedirect = $this->accountRedirect->getRedirectCookie(); if (!$this->scopeConfig->getValue('customer/startup/redirect_dashboard') && $requestedRedirect) { $resultRedirect->setUrl($this->_redirect->success($requestedRedirect)); $this->accountRedirect->clearRedirectCookie(); return $resultRedirect; } $resultRedirect = $this->accountRedirect->getRedirect(); } if ($this->getCookieManager()->getCookie('mage-cache-sessid')) { $metadata = $this->getCookieMetadataFactory()->createCookieMetadata(); $metadata->setPath('/'); $this->getCookieManager()->deleteCookie('mage-cache-sessid', $metadata); } return $resultRedirect; } catch (StateException $e) { /*$this->messageManager->addComplexErrorMessage( 'customerAlreadyExistsErrorMessage', [ 'url' => $this->urlModel->getUrl('customer/account/forgotpassword'), ] );*/ $this->messageManager->addExceptionMessage($e, __('Email Already Registered. Please login from here.')); } catch (InputException $e) { $this->messageManager->addErrorMessage($e->getMessage()); foreach ($e->getErrors() as $error) { $this->messageManager->addErrorMessage($error->getMessage()); } } catch (LocalizedException $e) { $this->messageManager->addErrorMessage($e->getMessage()); } catch (\Exception $e) { $this->messageManager->addExceptionMessage($e, __('We can\'t save the customer.')); } $this->session->setCustomerFormData($this->getRequest()->getPostValue()); $defaultUrl = $this->urlModel->getUrl('*/*/login', ['_secure' => true]); return $resultRedirect->setUrl($this->_redirect->error($defaultUrl)); } /** * Retrieve success message * * @deprecated 102.0.4 * @see getMessageManagerSuccessMessage() * @return string */ protected function getSuccessMessage() { if ($this->addressHelper->isVatValidationEnabled()) { if ($this->addressHelper->getTaxCalculationAddressType() == Address::TYPE_SHIPPING) { // @codingStandardsIgnoreStart $message = __( 'If you are a registered VAT customer, please <a href="%1">click here</a> to enter your shipping address for proper VAT calculation.', $this->urlModel->getUrl('customer/address/edit') ); // @codingStandardsIgnoreEnd } else { // @codingStandardsIgnoreStart $message = __( 'If you are a registered VAT customer, please <a href="%1">click here</a> to enter your billing address for proper VAT calculation.', $this->urlModel->getUrl('customer/address/edit') ); // @codingStandardsIgnoreEnd } } else { $message = __('Registration completed. Please verify your account by clicking on the link sent on your registered email id.'); } return $message; } /** * Retrieve cookie manager * * @deprecated 100.1.0 * @return \Magento\Framework\Stdlib\Cookie\PhpCookieManager */ private function getCookieManager() { if (!$this->cookieMetadataManager) { $this->cookieMetadataManager = ObjectManager::getInstance()->get( \Magento\Framework\Stdlib\Cookie\PhpCookieManager::class ); } return $this->cookieMetadataManager; } /** * Retrieve cookie metadata factory * * @deprecated 100.1.0 * @return \Magento\Framework\Stdlib\Cookie\CookieMetadataFactory */ private function getCookieMetadataFactory() { if (!$this->cookieMetadataFactory) { $this->cookieMetadataFactory = ObjectManager::getInstance()->get( \Magento\Framework\Stdlib\Cookie\CookieMetadataFactory::class ); } return $this->cookieMetadataFactory; } /** * Retrieve success message manager message * * @return MessageInterface * @throws \Magento\Framework\Exception\NoSuchEntityException */ private function getMessageManagerSuccessMessage(): MessageInterface { if ($this->addressHelper->isVatValidationEnabled()) { if ($this->addressHelper->getTaxCalculationAddressType() == Address::TYPE_SHIPPING) { $identifier = 'customerVatShippingAddressSuccessMessage'; } else { $identifier = 'customerVatBillingAddressSuccessMessage'; } $message = $this->messageManager ->createMessage(MessageInterface::TYPE_SUCCESS, $identifier) ->setData( [ 'url' => $this->urlModel->getUrl('customer/address/edit'), ] ); } else { $message = $this->messageManager ->createMessage(MessageInterface::TYPE_SUCCESS) ->setText( __('Registration completed. Please verify your account by clicking on the link sent on your registered email id.') ); } return $message; } }