/** * Test-contour shim for the MIS webSDK (WrSDK) and Yandex SmartCaptcha. * * Production keeps loading the real SDK from widget.sovamed.ru / widget.wmtmed.ru * and the real captcha from smartcaptcha.yandexcloud.net. Those hosts are not * reachable from the isolated *.sova.local test contour and their captcha sitekey * is bound to production domains, so patient registration cannot complete there. * * This module is a no-op unless the page is served from a *.sova.local host. */ function isTestContour() { return typeof location !== 'undefined' && /\.sova\.local$/i.test(location.hostname); } function resolveLater(value, ms) { return new Promise(function(resolve) { setTimeout(function() { resolve(value); }, ms || 150); }); } function rejectLater(value, ms) { return new Promise(function(_, reject) { setTimeout(function() { reject(value); }, ms || 150); }); } function TestWrSDK() { this.data = { user: { authenticated: false } }; this.sdkOrigin = location.origin; } TestWrSDK.prototype.on = function(event, callback) { if (typeof callback === 'function') { setTimeout(callback, 0); } return this; }; TestWrSDK.prototype.isLoggedIn = function() { return resolveLater({ authenticated: false }); }; // New patient: report "not found" so the UI switches to the registration form. TestWrSDK.prototype.recoveryInit = function() { return rejectLater({ data: { message: 'Пользователь не найден в базе данных (тестовый контур)' } }); }; TestWrSDK.prototype.registerInit = function() { return resolveLater({ data: { rToken: 'test-rtoken-' + Date.now(), email: 'false' } }); }; TestWrSDK.prototype.registerComplete = function() { return resolveLater({ data: { text: 'Тестовый контур: аккаунт создан. Код подтверждения — любой.' } }); }; TestWrSDK.prototype.recoveryComplete = function() { return resolveLater({ data: { message: 'Тестовый контур: пароль установлен.' } }); }; TestWrSDK.prototype.changeTempPassword = function() { return resolveLater({ data: { success: 'Тестовый контур: пароль изменён.' } }); }; TestWrSDK.prototype.loadLoginView = function() {}; TestWrSDK.prototype.loginClient = function() { return rejectLater({ data: { message: 'Вход в тестовом контуре недоступен: МИС замокана.' } }); }; function installSmartCaptcha() { if (window.smartCaptcha && window.smartCaptcha.__test) { return; } window.smartCaptcha = { __test: true, render: function(container) { if (container) { container.innerHTML = '