tfa = $tfa; $this->session = $session; $this->jsonFactory = $jsonFactory; $this->tfaSession = $tfaSession; $this->trustedManager = $trustedManager; $this->authy = $authy; $this->dataObjectFactory = $dataObjectFactory; $this->alert = $alert; } /** * Get current user * @return \Magento\User\Model\User|null */ private function getUser() { return $this->session->getUser(); } /** * @inheritdoc */ public function execute() { $user = $this->getUser(); $result = $this->jsonFactory->create(); try { $this->authy->verify($user, $this->dataObjectFactory->create([ 'data' => $this->getRequest()->getParams(), ])); $this->trustedManager->handleTrustDeviceRequest(Authy::CODE, $this->getRequest()); $this->tfaSession->grantAccess(); $result->setData(['success' => true]); } catch (\Exception $e) { $this->alert->event( 'MSP_TwoFactorAuth', 'Authy error', AlertInterface::LEVEL_ERROR, $this->getUser()->getUserName(), AlertInterface::ACTION_LOG, $e->getMessage() ); $result->setData(['success' => false, 'message' => $e->getMessage()]); } return $result; } /** * @inheritdoc */ protected function _isAllowed() { $user = $this->getUser(); return $user && $this->tfa->getProviderIsAllowed($user->getId(), Authy::CODE) && $this->tfa->getProvider(Authy::CODE)->isActive($user->getId()); } }