request = $request; $this->messageManager = $messageManager; $this->sessionsManager = $sessionsManager; $this->securityCookie = $securityCookie; } /** * Admin Session prolong functionality * * @param Session $session * @param \Closure $proceed * @return mixed */ public function aroundProlong(Session $session, \Closure $proceed) { if (!$this->sessionsManager->getCurrentSession()->isLoggedInStatus()) { $session->destroy(); $this->addUserLogoutNotification(); return null; } $result = $proceed(); $this->sessionsManager->processProlong(); return $result; } /** * Add user logout notification * * @return $this */ private function addUserLogoutNotification() { if ($this->isAjaxRequest()) { $this->securityCookie->setLogoutReasonCookie( $this->sessionsManager->getCurrentSession()->getStatus() ); } elseif ($message = $this->sessionsManager->getLogoutReasonMessage()) { $this->messageManager->addErrorMessage($message); } return $this; } /** * Check if a request is AJAX request * * @return bool */ private function isAjaxRequest() { return (bool) $this->request->getParam('isAjax'); } }