From 6b47376d1984f08766f42057b46d2ae96b872c9e Mon Sep 17 00:00:00 2001 From: "adel.ka" Date: Mon, 24 Nov 2025 12:32:49 +0300 Subject: [PATCH] SUPPORT-9601: fixes --- html/index.html | 4 +- html/script/access-check.js | 86 +++++++++++++++++++++++++++++++++++++ html/script/check-csp.js | 0 html/ul/home.html | 10 ++--- 4 files changed, 93 insertions(+), 7 deletions(-) create mode 100644 html/script/access-check.js delete mode 100644 html/script/check-csp.js diff --git a/html/index.html b/html/index.html index bd2b6f2..f745d43 100644 --- a/html/index.html +++ b/html/index.html @@ -36,8 +36,8 @@
Для организаций
- - Подробнее +
Направление сведений через ">Личный кабинет

+ " class="btn">Подробнее
diff --git a/html/script/access-check.js b/html/script/access-check.js new file mode 100644 index 0000000..ec6c037 --- /dev/null +++ b/html/script/access-check.js @@ -0,0 +1,86 @@ +function checkBrowser() { + const userAgent = navigator.userAgent; + return userAgent.includes("Chromium GOST") || userAgent.includes("YaBrowser"); +} + +function checkCsp(cspTimeout) { + let timeoutMillis; + if (cspTimeout) { + timeoutMillis = cspTimeout * 1000; + } + else { + timeoutMillis = 5000; + } + + return new Promise((resolve, reject) => { + const timeout = setTimeout(() => { + reject(new Error('Истекло время ожидания загрузки плагина')); + }, timeoutMillis); + window.cadesplugin + .then(() => { + clearTimeout(timeout); + if (window.cadesplugin.CreateObjectAsync) { + return window.cadesplugin.CreateObjectAsync("CAdESCOM.About"); + } else { + return Promise.resolve(window.cadesplugin.CreateObject("CAdESCOM.About")); + } + }) + .then((oAbout) => { + if (!oAbout || !oAbout.CSPVersion) { + throw new Error('Не удалось создать объект CAdESCOM.About'); + } + return oAbout.CSPVersion(); + }) + .then((cspVersion) => { + return Promise.all([ + cspVersion.MajorVersion, + cspVersion.MinorVersion, + cspVersion.BuildVersion + ]); + }) + .then(([majorVersion, minorVersion, buildVersion]) => { + if (majorVersion === 5 && minorVersion === 0 && buildVersion >= 12000) { + resolve(true); + } else { + console.error( + `Версия CSP не подходит. Необходима версия 5.0.12000 и выше, текущая версия: ${majorVersion}.${minorVersion}.${buildVersion}` + ); + resolve(false); + } + }) + .catch((error) => { + console.error("Ошибка при получении версии CSP:", error); + clearTimeout(timeout); + resolve(false); + }); + }) + .catch((error) => { + console.error("Ошибка при проверке CSP:", error); + return false; + }); +} + +window.addEventListener('DOMContentLoaded', () => { + const browserCheckInfo = document.getElementById('browser-check-info'); + const loginButton = document.getElementById('login-button'); + + const browserPassed = checkBrowser(); + + if (browserPassed) { + checkCsp(5).then(cspCheckPassed => { + if (cspCheckPassed) { + if (browserCheckInfo) { + browserCheckInfo.hidden = true; + } + } else { + if (loginButton) { + loginButton.classList.add('disabled'); + } + } + }); + } else { + if (loginButton) { + loginButton.classList.add('disabled'); + } + } +}); \ No newline at end of file diff --git a/html/script/check-csp.js b/html/script/check-csp.js deleted file mode 100644 index e69de29..0000000 diff --git a/html/ul/home.html b/html/ul/home.html index 5fe665b..da272da 100644 --- a/html/ul/home.html +++ b/html/ul/home.html @@ -7,8 +7,8 @@ - - + + @@ -22,10 +22,10 @@

- Доступ к личному кабинету для юридических лиц осуществляется исключительно через браузеры Яндекс или Chromium gost. + Доступ к личному кабинету для юридических лиц осуществляется исключительно через браузеры Яндекс или Chromium GOST, а также необходимо наличие установленного приложения КриптоПро версии CSP 5.0 R3 и выше с расширением КриптоПро ЭЦП Browser plug-in

- Пожалуйста, попробуйте снова, выбрав один из этих браузеров. + Пожалуйста, попробуйте снова, выбрав один из этих браузеров и установив КриптоПро CSP, КриптоПро ЭЦП Browser plug-in.

@@ -63,7 +63,7 @@
- Войти в Личный кабинет + " class="btn">Войти в Личный кабинет