/**
  * @param AbstractAction $subject
  * @param RequestInterface $request
  * @return void
  * @SuppressWarnings(PHPMD.UnusedFormalParameter)
  */
 public function beforeDispatch(AbstractAction $subject, RequestInterface $request)
 {
     if ($this->state->getAreaCode() == Area::AREA_FRONTEND && $request->isPost() && $this->notificationStorage->isExists(NotificationStorage::UPDATE_CUSTOMER_SESSION, $this->session->getCustomerId())) {
         $customer = $this->customerRepository->getById($this->session->getCustomerId());
         $this->session->setCustomerData($customer);
         $this->session->setCustomerGroupId($customer->getGroupId());
         $this->session->regenerateId();
         $this->notificationStorage->remove(NotificationStorage::UPDATE_CUSTOMER_SESSION, $customer->getId());
     }
 }
 /**
  * Auto-redirect to base url (without SID) if the requested url doesn't match it.
  * By default this feature is enabled in configuration.
  *
  * @param \Magento\Framework\App\FrontController $subject
  * @param callable $proceed
  * @param \Magento\Framework\App\RequestInterface $request
  *
  * @return \Magento\Framework\App\ResponseInterface
  * @SuppressWarnings(PHPMD.UnusedFormalParameter)
  */
 public function aroundDispatch(\Magento\Framework\App\FrontController $subject, \Closure $proceed, \Magento\Framework\App\RequestInterface $request)
 {
     if (!$request->isPost() && $this->_isBaseUrlCheckEnabled()) {
         $baseUrl = $this->_storeManager->getStore()->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_WEB, $this->_storeManager->getStore()->isCurrentlySecure());
         if ($baseUrl) {
             $uri = parse_url($baseUrl);
             if (!$this->_isBaseUrlCorrect($uri, $request)) {
                 $redirectUrl = $this->_url->getRedirectUrl($this->_url->getUrl(ltrim($request->getPathInfo(), '/'), ['_nosid' => true]));
                 $redirectCode = (int) $this->_scopeConfig->getValue('web/url/redirect_to_base', \Magento\Store\Model\ScopeInterface::SCOPE_STORE) !== 301 ? 302 : 301;
                 $response = $this->_responseFactory->create();
                 $response->setRedirect($redirectUrl, $redirectCode);
                 return $response;
             }
         }
     }
     $request->setDispatched(false);
     return $proceed($request);
 }