• Модуль: security
  • Путь к файлу: ~/bitrix/modules/security/lib/mfa/otp.php
  • Класс: BitrixSecurityMfaOtp
  • Вызов: Otp::getByUser
static function getByUser($userId)
{
	$userId = (int) $userId;

	if ($userId <= 0)
		throw new ArgumentTypeException('userId', 'positive integer');

	$userInfo = UserTable::getList(array(
		'filter' => array('=USER_ID' => $userId),
		'select' => array('ACTIVE', 'USER_ID', 'SECRET', 'PARAMS', 'TYPE', 'ATTEMPTS', 'INITIAL_DATE', 'SKIP_MANDATORY', 'DEACTIVATE_UNTIL', 'USER_ACTIVE' => 'USER.ACTIVE')
	));

	$userInfo = $userInfo->fetch();

	if (!$userInfo)
	{
		// OTP not available for this user
		$instance = new static;
		$instance->setUserId($userId);
		$instance->setActive(false);
	}
	else
	{
		$type = $userInfo['TYPE']?: self::TYPE_DEFAULT;
		$userInfo['SECRET'] = pack('H*', $userInfo['SECRET']);
		$userInfo['ACTIVE'] = ($userInfo['ACTIVE'] === 'Y');
		$userInfo['USER_ACTIVE'] = ($userInfo['USER_ACTIVE'] === 'Y');
		$userInfo['SKIP_MANDATORY'] = $userInfo['SKIP_MANDATORY'] === 'Y';

		$instance = static::getByType($type);
		$instance->setUserInfo($userInfo);
	}

	return $instance;
}