- Модуль: 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;
}