-
- Create Custom Module
- Register Plugin
- Implement Redirect Logic
Step 1: Create Custom Module
It is necessary to create etc folder and add the module.xml
file in it
app/code/Thecoachsmb/CustomerLoginRedirect/etc/module.xml
Contents would be:
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
<module name="
Thecoachsmb_CustomerLoginRedirect
" >
<sequence>
<module name="
Magento_Customer
"/>
</sequence>
</module>
</config>
To register the module, create a registration.php file in the app/code/Thecoachsmb/CustomerLoginRedirect/registration.php
Contents would be:
<?php
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE,
'Thecoachsmb_CustomerLoginRedirect',
__DIR__
);
Step 2 – Register Plugin
The next is to tell to Magento that we are creating our own file to change the logic. To do this, we need to create app/code/Thecoachsmb/CustomerLoginRedirect/etc/frontend/di.xml
and content will be as follows:
<?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\Customer\Controller\Account\LoginPost"> <plugin name="thecoachsmb_customerLogin_redirect_after_login" type="Thecoachsmb\CustomerLoginRedirect\Plugin\RedirectAfterLogin" sortOrder="1" /> </type> </config>
Step 3 – Implement Redirect Logic
In this step, we are going to create our own function to implement redirect logic. if the customer is logged and has items in the cart then redirect to the checkout page. Otherwise, it will redirect to the customer account page.
To do this, we need to create app/code/Thecoachsmb/CustomerLoginRedirect/Plugin/RedirectAfterLogin.php
and the content will be as below:
<?php
namespace Thecoachsmb\CustomerLoginRedirect\Plugin; class RedirectAfterLogin { protected $_checkoutSession; public function __construct( \Magento\Checkout\Model\Session $checkoutSession ) { $this->_checkoutSession = $checkoutSession; } /** * Redirect after login in some conditions * * @param \Magento\Customer\Controller\Account\LoginPost $subject * @param \Magento\Framework\Controller\Result\Redirect $result */ public function afterExecute( \Magento\Customer\Controller\Account\LoginPost $subject, $result ) { $itemCount = $this->_checkoutSession->getQuote()->getItemsCount(); if ($itemCount) { return $result->setPath('checkout'); } return $result; } }
That’s it!!
In this article, we have learn how to implement customer login redirect logic. Thanks for reading this article. See you in next article.