jsonFactory = $jsonFactory; $this->session = $session; $this->tfa = $tfa; $this->alert = $alert; $this->verification = $verification; $this->userConfigManager = $userConfigManager; } /** * Get current user * @return \Magento\User\Model\User|null */ private function getUser() { return $this->session->getUser(); } /** * @inheritdoc */ public function execute() { $request = $this->getRequest(); $response = $this->jsonFactory->create(); try { $this->verification->request( $this->getUser(), $request->getParam('tfa_country'), $request->getParam('tfa_phone'), $request->getParam('tfa_method'), $res ); $this->alert->event( 'MSP_TwoFactorAuth', 'New authy verification request via ' . $request->getParam('tfa_method'), AlertInterface::LEVEL_INFO, $this->getUser()->getUserName() ); $response->setData([ 'success' => true, 'message' => $res['message'], 'seconds_to_expire' => (int) $res['seconds_to_expire'], ]); } catch (\Exception $e) { $this->alert->event( 'MSP_TwoFactorAuth', 'Authy verification request failure via ' . $request->getParam('tfa_method'), AlertInterface::LEVEL_ERROR, $this->getUser()->getUserName(), AlertInterface::ACTION_LOG, $e->getMessage() ); $response->setData(['success' => false, 'message' => $e->getMessage()]); } return $response; } /** * @inheritdoc */ protected function _isAllowed() { $user = $this->getUser(); return $user && $this->tfa->getProviderIsAllowed($user->getId(), Authy::CODE) && !$this->tfa->getProvider(Authy::CODE)->isActive($user->getId()); } }