Your IP : 18.191.218.227


Current Path : /home/bitrix/ext_www/shuft.com.ua/bitrix/components/bitrix/security.auth.otp.mandatory/
Upload File :
Current File : /home/bitrix/ext_www/shuft.com.ua/bitrix/components/bitrix/security.auth.otp.mandatory/class.php

<?php
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true)
	die();

use Bitrix\Security\Mfa\Otp;
use Bitrix\Main\Localization\Loc;
Loc::loadMessages(__FILE__);

class CSecurityAuthOtpMandatory
	extends CBitrixComponent
{
	public function onPrepareComponentParams($arParams)
	{

		$result = array(
			'AUTH_LOGIN_URL' => $arParams['AUTH_LOGIN_URL']
		);
		if (in_array($arParams['NOT_SHOW_LINKS'], array('Y', 'N'), true))
			$result['NOT_SHOW_LINKS'] = $arParams['NOT_SHOW_LINKS'];
		else
			$result['NOT_SHOW_LINKS'] = 'N';

		return $result;
	}

	public function executeComponent()
	{
		// get data for new OTP connection
		$this->arResult = $this->toView();
		$this->IncludeComponentTemplate();
	}

	/**
	 * @return array
	 */
	protected function toView()
	{
		/* @global CUser $USER */
		global $USER;

		if (!CModule::includeModule('security'))
		{
			return array(
				'MESSAGE' => Loc::getMessage('SECURITY_AUTH_OTP_MANDATORY_MODULE_ERROR')
			);
		}

		if (!Otp::isOtpRequiredByMandatory())
		{
			return array(
				'MESSAGE' =>  Loc::getMessage('SECURITY_AUTH_OTP_MANDATORY_NOT_REQUIRED')
			);
		}

		if ($USER->IsAuthorized())
		{
			return array(
				'MESSAGE' =>  Loc::getMessage('SECURITY_AUTH_OTP_MANDATORY_AUTH_ERROR')
			);
		}

		$deferredParams = Otp::getDeferredParams();
		if (!$deferredParams['USER_ID'])
		{
			return array(
				'MESSAGE' => Loc::getMessage('SECURITY_AUTH_OTP_MANDATORY_UNKNOWN_ERROR')
			);
		}

		$result = array();
		$otp = Otp::getByUser($deferredParams['USER_ID']);
		$otp->regenerate();
		$result['SECRET'] = $otp->getHexSecret();
		$result['TYPE'] = $otp->getType();
		$result['APP_SECRET'] = $otp->getAppSecret();
		$result['APP_SECRET_SPACED'] = chunk_split($result['APP_SECRET'], 4, ' ');
		$result['PROVISION_URI'] = $otp->getProvisioningUri();
		$result['SUCCESSFUL_URL'] = $this->arParams['SUCCESSFUL_URL'];
		$result['TWO_CODE_REQUIRED'] = $otp->getAlgorithm()->isTwoCodeRequired();
		$result['OTP'] = $otp;
		return $result;
	}
}