tfa = $tfa; $this->session = $session; $this->userConfigManager = $userConfigManager; $this->context = $context; } /** * Get current user * @return \Magento\User\Model\User|null */ private function getUser() { return $this->session->getUser(); } /** * @inheritdoc */ public function execute() { $user = $this->getUser(); $providersToConfigure = $this->tfa->getProvidersToActivate($user->getId()); if (!empty($providersToConfigure)) { return $this->_redirect($providersToConfigure[0]->getConfigureAction()); } $providerCode = ''; $defaultProviderCode = $this->userConfigManager->getDefaultProvider($user->getId()); if ($this->tfa->getProviderIsAllowed($user->getId(), $defaultProviderCode)) { $providerCode = $defaultProviderCode; } if (!$providerCode) { $providers = $this->tfa->getUserProviders($user->getId()); if (!empty($providers)) { $providerCode = $providers[0]->getCode(); } } if (!$providerCode) { return $this->_redirect($this->context->getBackendUrl()->getStartupPageUrl()); } if ($provider = $this->tfa->getProvider($providerCode)) { return $this->_redirect($provider->getAuthAction()); } throw new LocalizedException(__('Internal error accessing 2FA index page')); } }