tfa = $tfa; $this->actionFlag = $actionFlag; $this->url = $url; $this->tfaSession = $tfaSession; $this->session = $session; $this->trustedManager = $trustedManager; } /** * Get current user * @return \Magento\User\Model\User|null */ private function getUser() { return $this->session->getUser(); } /** * @param Observer $observer * @return void */ public function execute(Observer $observer) { if (!$this->tfa->isEnabled()) { return; } /** @var $controllerAction \Magento\Backend\App\AbstractAction */ $controllerAction = $observer->getEvent()->getControllerAction(); $fullActionName = $controllerAction->getRequest()->getFullActionName(); if (in_array($fullActionName, $this->tfa->getAllowedUrls())) { return; } $user = $this->getUser(); if ($user && !empty($this->tfa->getUserProviders($user->getId()))) { $accessGranted = ($this->tfaSession->isGranted() || $this->trustedManager->isTrustedDevice()) && empty($this->tfa->getProvidersToActivate($user->getId())); if (!$accessGranted) { $this->actionFlag->set('', Action::FLAG_NO_DISPATCH, true); $url = $this->url->getUrl('msp_twofactorauth/tfa/index'); $controllerAction->getResponse()->setRedirect($url); } } } }