I want to restrict some unwanted users to access the site. So I am redirecting them to 404 Page but my logic is going to an infinite loop as the event I am calling from controller_action_predispatch
is called several times and I am not able to find the right one.
My Logic
namespace Namespace\Module\Observer;
class RedirectUsers implements \Magento\Framework\Event\ObserverInterface {
protected $_myHelper;
public function __construct(
\Namespace\Module\Helper\Data $myHelper,
) {
$this->_myHelper = $myHelper;
}
public function execute(\Magento\Framework\Event\Observer $observer) {
if(in_array($currentUser, $restrictedUsers)){
$url = $this->_myHelper->getNoRoutePageUrl();
header('Location: ' . $url);
exit;
}
}
}
My event.xml
<?xml version="1.0" ?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
<event name="controller_action_predispatch">
<observer instance="Namespace\Module\Observer\RedirectIp" name="namespace_module_observer_controller_actionpredispatch_controller_action_predispatch"/>
</event>
</config>