. */ namespace Plugins\Authenticator; use InvalidArgumentException; use SP\Controller\TabControllerBase; use SP\Core\Crypt; use SP\Core\Plugin\PluginBase; use SP\Core\Plugin\PluginInterface; use SP\Util\ArrayUtil; /** * Class Controller * * @package Plugins\Authenticator */ class PreferencesController { /** * @var TabControllerBase */ protected $Controller; /** * @var PluginBase */ protected $Plugin; /** * Controller constructor. * * @param TabControllerBase $Controller * @param PluginInterface $Plugin */ public function __construct(TabControllerBase $Controller, PluginInterface $Plugin) { $this->Controller = $Controller; $this->Plugin = $Plugin; } /** * Obtener la pestaña de seguridad */ public function getSecurityTab() { $base = $this->Plugin->getThemeDir() . DIRECTORY_SEPARATOR . 'views' . DIRECTORY_SEPARATOR . 'userpreferences'; // Datos del usuario de la sesión $UserData = $this->Controller->getUserData(); // Buscar al usuario en los datos del plugin /** @var AuthenticatorData $AuthenticatorData */ $AuthenticatorData = ArrayUtil::searchInObject($this->Plugin->getData(), 'userId', $UserData->getUserId(), new AuthenticatorData()); $this->Controller->view->addTemplate('preferences-security', $base); try { $IV = null; if (!$AuthenticatorData->isTwofaEnabled()) { $IV = Crypt::getIV(); $AuthenticatorData->setIV($IV); Session::setUserData($AuthenticatorData); } else { $IV = $AuthenticatorData->getIV(); } $twoFa = new Authenticator($UserData->getUserId(), $UserData->getUserLogin(), $IV); $this->Controller->view->assign('qrCode', !$AuthenticatorData->isTwofaEnabled() ? $twoFa->getUserQRCode() : ''); $this->Controller->view->assign('userId', $UserData->getUserId()); $this->Controller->view->assign('chk2FAEnabled', $AuthenticatorData->isTwofaEnabled()); $this->Controller->view->assign('expireDays', $AuthenticatorData->getExpireDays()); $this->Controller->view->assign('tabIndex', $this->Controller->addTab(_t('authenticator', 'Seguridad')), 'security'); $this->Controller->view->assign('actionId', ActionController::ACTION_TWOFA_SAVE, 'security'); } catch (InvalidArgumentException $e) { } } }