Here is the code, please review and advise.
Demo/Test/etc/frontend/events.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="layout_generate_blocks_before">
<observer name="Demo_check_for_vision_user_session" instance="Demo\Test\Observer\CheckForTestUserSession" />
</event>
</config>
Demo/Test/Observer/CheckForTestUserSession.php
<?php
namespace Demo\Test\Observer;
use Psr\Log\LoggerInterface;
use Magento\Framework\Event\Observer;
use Magento\Framework\Event\ObserverInterface;
use Magento\Framework\Session\SessionManagerInterface;
use Magento\Framework\App\Request\Http;
use Magento\Framework\UrlInterface;
use Magento\Framework\App\ResponseFactory;
use Magento\Framework\App\Response\RedirectInterface;
/**
* Class CheckForTestUserSession
* @package Demo\Test\Observer
*/
class CheckForTestUserSession implements ObserverInterface
{
/**
* @var SessionManagerInterface
*/
private $coreSession;
/**
* @var LoggerInterface
*/
private $logger;
/**
* @var Http
*/
protected $request;
/**
* @var UrlInterface
*/
protected $url;
/**
* @var ResponseFactory
*/
protected $responseFactory;
/**
* @var RedirectInterface
*/
protected $redirect;
/**
* constructor
*/
public function __construct(
LoggerInterface $logger,
SessionManagerInterface $coreSession,
Http $request,
UrlInterface $url,
ResponseFactory $responseFactory,
RedirectInterface $redirect
) {
$this->logger = $logger;
$this->coreSession = $coreSession;
$this->request = $request;
$this->url=$url;
$this->responseFactory = $responseFactory;
$this->redirect = $redirect;
}
/**
* Vision redirects a customer
*
* @param Observer $observer
*/
public function execute(Observer $observer)
{
$action = $observer->getEvent()->getFullActionName();
$SID= $this->request->getParam('SID');
//$layout = $observer->getEvent()->getLayout();
//$custId = $this->getRequest()->getParam('id');
$writer = new \Zend\Log\Writer\Stream(BP.'/var/log/magento11.log');
$logger = new \Zend\Log\Logger();
$logger->addWriter($writer);
if($SID){
$controller = $observer->getControllerAction();
$this->redirect->redirect($controller->getResponse(), 'checkout/cart');
}
}
}