diff --git a/backend/src/main/java/ru/micord/ervu/security/esia/service/EsiaAuthService.java b/backend/src/main/java/ru/micord/ervu/security/esia/service/EsiaAuthService.java index f3c048b..df67409 100644 --- a/backend/src/main/java/ru/micord/ervu/security/esia/service/EsiaAuthService.java +++ b/backend/src/main/java/ru/micord/ervu/security/esia/service/EsiaAuthService.java @@ -162,6 +162,7 @@ public class EsiaAuthService { String esiaAccessTokenStr = null; String prnOid = null; Long expiresIn = null; + long signSecret = 0, requestAccessToken = 0, verifySecret = 0; try { String clientId = esiaConfig.getClientId(); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy.MM.dd HH:mm:ss xx"); @@ -177,8 +178,9 @@ public class EsiaAuthService { parameters.put("state", "%s"); parameters.put("redirect_uri", redirectUrl); parameters.put("code", esiaAuthCode); - + long startTime = System.currentTimeMillis(); SignResponse signResponse = signMap(parameters); + signSecret = System.currentTimeMillis() - startTime; String state = signResponse.getState(); String clientSecret = signResponse.getSignature(); String authUrl = esiaConfig.getEsiaBaseUri() + esiaConfig.getEsiaTokenUrl(); @@ -194,6 +196,7 @@ public class EsiaAuthService { .setParameter("token_type", "Bearer") .setParameter("client_certificate_hash", esiaConfig.getClientCertHash()) .toFormUrlencodedString(); + startTime = System.currentTimeMillis(); HttpRequest postReq = HttpRequest.newBuilder(URI.create(authUrl)) .header(HttpHeaders.CONTENT_TYPE, "application/x-www-form-urlencoded") .POST(HttpRequest.BodyPublishers.ofString(postBody)) @@ -203,6 +206,7 @@ public class EsiaAuthService { .connectTimeout(Duration.ofSeconds(esiaConfig.getConnectionTimeout())) .build() .send(postReq, HttpResponse.BodyHandlers.ofString()); + requestAccessToken = System.currentTimeMillis() - startTime; String responseString = postResp.body(); EsiaTokenResponse tokenResponse = objectMapper.readValue(responseString, EsiaTokenResponse.class @@ -214,7 +218,9 @@ public class EsiaAuthService { throw new IllegalStateException("Esia response error. " + errMsg); } esiaAccessTokenStr = tokenResponse.getAccessToken(); + startTime = System.currentTimeMillis(); String verifyResult = verifyToken(esiaAccessTokenStr); + verifySecret = System.currentTimeMillis() - startTime; if (verifyResult != null) { throw new EsiaException(verifyResult); } @@ -228,6 +234,10 @@ public class EsiaAuthService { catch (Exception e) { throw new EsiaException(e); } + finally { + LOGGER.info("Thread {}: SignSecret: {}ms RequestAccessToken: {}ms VerifySecret: {}ms", + Thread.currentThread().getId(), signSecret, requestAccessToken, verifySecret); + } try { Response ervuIdResponse = getErvuIdResponse(esiaAccessTokenStr); createTokenAndAddCookie(response, prnOid, ervuIdResponse.getErvuId(), expiresIn); @@ -365,17 +375,26 @@ public class EsiaAuthService { } public Response getErvuIdResponse(String accessToken) { + long requestPersonData = 0, requestIdERVU = 0; try { + long startTime = System.currentTimeMillis(); PersonModel personModel = personalDataService.getPersonModel(accessToken); + requestPersonData = System.currentTimeMillis() - startTime; Person person = copyToPerson(personModel); + startTime = System.currentTimeMillis(); String kafkaResponse = replyingKafkaService.sendMessageAndGetReply(requestTopic, requestReplyTopic, objectMapper.writeValueAsString(person) ); + requestIdERVU = System.currentTimeMillis() - startTime; return objectMapper.readValue(kafkaResponse, Response.class); } catch (Exception e) { throw new EsiaException(e); } + finally { + LOGGER.info("Thread {}: RequestPersonData: {}ms RequestIdERVU: {}ms", + Thread.currentThread().getId(), requestPersonData, requestIdERVU); + } } private Person copyToPerson(PersonModel personModel) { diff --git a/config/nginx.conf b/config/nginx.conf index 85b7e6a..511895d 100644 --- a/config/nginx.conf +++ b/config/nginx.conf @@ -81,7 +81,7 @@ http { index index.html; try_files $uri @index; - add_header Content-Security-Policy "frame-ancestors 'none'; default-src 'self'; script-src 'self'; style-src 'unsafe-inline' 'self' data:; font-src 'self' data:; img-src 'self' data:;"; + add_header Content-Security-Policy "frame-ancestors 'none'; default-src 'self'; connect-src 'self' https://www.sberbank.ru; script-src 'self'; style-src 'unsafe-inline' 'self' data:; font-src 'self' data:; img-src 'self' data:;"; #Application config location = /src/resources/app-config.json { @@ -106,7 +106,7 @@ http { location @index { root /frontend; add_header Cache-Control "no-cache"; - add_header Content-Security-Policy "frame-ancestors 'none'; default-src 'self'; script-src 'self'; style-src 'unsafe-inline' 'self' data:; font-src 'self' data:; img-src 'self' data:;"; + add_header Content-Security-Policy "frame-ancestors 'none'; default-src 'self'; connect-src 'self' https://www.sberbank.ru; script-src 'self'; style-src 'unsafe-inline' 'self' data:; font-src 'self' data:; img-src 'self' data:;"; expires 0; try_files /index.html =404; } diff --git a/config/tomcat/etc/tomcat/server.xml b/config/tomcat/etc/tomcat/server.xml index ec52cfa..af21aff 100644 --- a/config/tomcat/etc/tomcat/server.xml +++ b/config/tomcat/etc/tomcat/server.xml @@ -162,8 +162,8 @@ Documentation at: /docs/config/valve.html Note: The pattern used is equivalent to using pattern="common" --> + prefix="localhost_access_log" suffix=".log" + pattern="%h %l %u %t "%r" %s %b %D" /> diff --git a/frontend/browser_check.js b/frontend/browser_check.js deleted file mode 100644 index 7c4532b..0000000 --- a/frontend/browser_check.js +++ /dev/null @@ -1,3 +0,0 @@ -document.addEventListener("DOMContentLoaded", function(event) { - document.getElementById("browser-check-info").hidden = navigator.userAgent.indexOf("Chromium GOST") > -1 || navigator.userAgent.indexOf("YaBrowser") > -1; -}); diff --git a/frontend/home.html b/frontend/home.html deleted file mode 100644 index 65c5631..0000000 --- a/frontend/home.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - - - - - - -
- -
Реестр повесток физических лиц
-
- -
-
-
-
-
Для обеспечения защищённого соединения с сайтом реестра повесток необходимо установить браузер Яндекс или Chromium GOST.
-
-
-
-
-
-
-
Реестр повесток
-
Реестр повесток содержит сведения обо всех направленных повестках военкомата
-
Зачем смотреть реестр повесток?
-
-
-
Узнать, что в Реестре есть повестка на Ваше имя.
-
-
-
Уточнить дату, время 
и место явки.
-
-
-
Получить выписку из Реестра повесток или Реестра воинского учёта.
-
-
-
-
-
-
-
-
Как посмотреть повестку?
-
-
-
-
Войти в Реестр с помощью своей учётной записи на Госуслугах через ЕСИА
-
Она должна быть подтверждённой
-
Если учётной записи нет, зарегистрируйтесь
-
- -
-
-
-
-
Для чего направляется повестка?
-
-
-
-
Прохождение медосвидетельствования
-
Прохождение призывной комиссии
-
-
-
-
-
Уточнение документов воинского учёта
-
Отправка к месту прохождения военной службы.
-
-
-
-
-
-
Как вручается повестка?
-
Закон о воинской обязанности и военной службе, ст. 31.
-
-
Лично под расписку по месту жительства, работы или учёбы
-
Размещение в Реестре повесток
-
Заказным письмом по Почте России
-
-
-
-
-
-
Когда повестка считается вручённой?
-
-
-
-
После подписи, удостоверяющей получение лично
-
Через 7 дней с даты размещения в Реестре повесток
-
В день вручения заказного письма
-
В день отказа от получения лично или по почте — в случае такого отказа
-
-
-
-
-
-
- Явиться в военкомат необходимо в срок, указанный в повестке! -
-
-
-
Временные ограничения
-
В случае неявки по повестке к Вам будут применены временные меры. Подробнее о временных мерах
-
-
-
-
Если не прийти в военкомат в течение 20 календарных дней от даты явки, указанной в повестке, начнут действовать другие ограничения, запрещающие:
-
-
-
-
управлять транспортом
-
регистрировать транспорт и недвижимость
-
получать кредиты и займы
-
регистрироваться в качестве ИП или самозанятого
-
-
-
-
-
С даты, когда повестка размещена в Реестре повесток, гражданам, подлежащим призыву на воинскую службу, запрещается выезд из России
-
Все ограничения, включая запрет на выезд из России, временные. Их снимут в течение суток после явки в военкомат
-
-
-
-
- -
-
- - - diff --git a/frontend/index.webpack.html b/frontend/index.webpack.html index 0a55a7e..be59390 100644 --- a/frontend/index.webpack.html +++ b/frontend/index.webpack.html @@ -5,7 +5,7 @@ + content="default-src 'self'; connect-src 'self' https://www.sberbank.ru; script-src 'self'; style-src 'unsafe-inline' 'self' data:; font-src 'self' data:; img-src 'self' data:"/> diff --git a/frontend/src/resources/app-config.json b/frontend/src/resources/app-config.json index fce2327..3fc311d 100644 --- a/frontend/src/resources/app-config.json +++ b/frontend/src/resources/app-config.json @@ -16,5 +16,6 @@ "password_pattern": "^((?=(.*\\d){1,})(?=.*[a-zа-яё])(?=.*[A-ZА-ЯЁ]).{8,})$", "password_pattern_error": "Пароль должен содержать заглавные или прописные буквы и как минимум 1 цифру", "show.client.errors": false, - "available_task.single_fetch": true + "available_task.single_fetch": true, + "cert_check_url": "https://lkrp-dev2.micord.ru" } diff --git a/frontend/src/resources/css/components-lkrp.css b/frontend/src/resources/css/components-lkrp.css index dac0050..21fa6af 100644 --- a/frontend/src/resources/css/components-lkrp.css +++ b/frontend/src/resources/css/components-lkrp.css @@ -861,3 +861,494 @@ .webbpm.ervu_lkrp_fl .dialog-link { cursor: pointer; } + + +/*---------------- HOME ----------------*/ +.webbpm .header-landing { + background-color: var(--color-text-primary) !important; + z-index: 1; +} +.webbpm .header-landing > div { + display: flex; + flex-direction: row; + align-items: center; + font-family: 'InterSB'; +} +.webbpm .header-landing .header-logo { + width: 62px; + height: 40px; + background: url(../img/svg/mil-logo.svg) no-repeat 0 50%; +} +.webbpm .header-landing .header-title { + color: var(--white); + font-size: var(--size-text-secondary); + margin-left: var(--indent-mini); +} + +.webbpm .container-inside .short-text { + max-width: 60%; +} +.webbpm .container-inside .paragraph-left .short-text { + max-width: 70%; +} + +.webbpm .container-inside .list-group { + position: relative; + font-size: var(--size-text-secondary); + line-height: normal; + padding: 0 var(--w-screen); +} +.webbpm .container-inside .list-group .btn { + width: max-content; +} +.webbpm .container-inside .list-group .title { + font-size: var(--l-size-text-maintitle); + font-family: 'GolosB'; + margin-bottom: var(--l-indent-huge); +} +.webbpm .container-inside .list-group .subtitle { + font-size: var(--l-size-text-title); + font-family: 'GolosDB'; + margin-bottom: var(--l-indent-big); +} +.webbpm .container-inside .list-group .muted { + color: var(--color-light); +} + +.webbpm .container-inside .list-group .paragraph { + display: flex; + flex-direction: row; +} +.webbpm .container-inside .list-group .paragraph .paragraph-left { + width: 40%; +} +.webbpm .container-inside .list-group .paragraph .paragraph-right { + width: 60%; +} +.webbpm .container-inside .list-group .paragraph .paragraph-half { + width: 50%; +} +.webbpm .container-inside .list-group .paragraph .paragraph-third { + width: 33.33%; +} +.webbpm .container-inside .list-group .paragraph [class*="paragraph-"] + [class*="paragraph-"] { + margin-left: 40px; +} +.webbpm .container-inside .list-group .paragraph .text { + font-family: 'InterSB'; + font-size: var(--l-size-text-primary); + margin-bottom: var(--indent-mini); +} +.webbpm .container-inside .list-group .paragraph .icon-checklist, +.webbpm .container-inside .list-group .paragraph .icon-clock, +.webbpm .container-inside .list-group .paragraph .icon-text { + padding-top: 44px; +} +.webbpm .container-inside .list-group .paragraph .icon-checklist { + background: url(../img/svg/checklist-32x32.svg) no-repeat 0 0; +} +.webbpm .container-inside .list-group .paragraph .icon-clock { + background: url(../img/svg/clock-32x32.svg) no-repeat 0 0; +} +.webbpm .container-inside .list-group .paragraph .icon-text { + background: url(../img/svg/text-32x32.svg) no-repeat 0 0; +} + +.webbpm .container-inside .list-group .list > div { + position: relative; + padding-left: 36px; +} +.webbpm .container-inside .list-group .list > div + div { + margin-top: var(--indent-mini); +} +.webbpm .container-inside .list-group .list > div::after { + content: ""; + position: absolute; + width: 24px; + height: 24px; + top: 0; + left: 0; +} +.webbpm .container-inside .list-group .list > div.esia::after { + background: url(../img/svg/esia-24x24.svg) no-repeat 0 0; +} +.webbpm .container-inside .list-group .list > div.case::after { + background: url(../img/svg/case-24x24.svg) no-repeat 0 0; +} +.webbpm .container-inside .list-group .list > div.user::after { + background: url(../img/svg/user-24x24.svg) no-repeat 0 0; +} +.webbpm .container-inside .list-group .list > div.romb::after { + background: url(../img/svg/romb-24x24.svg) no-repeat 0 0; +} +.webbpm .container-inside .list-group .list ~ .btn-group { + margin-top: var(--indent-medium); +} + +.webbpm .container-inside .list-group .section-group > div { + display: flex; + flex-direction: column; + min-height: 80px; + position: relative; + padding: 16px 16px 16px 76px; + margin-bottom: 16px; + border-radius: 4px; + background-color: var(--bg-form); +} +.webbpm .container-inside .list-group .section-group > div:last-child { + margin-bottom: 0; +} +.webbpm .container-inside .list-group .section-group > div::before { + content: ""; + position: absolute; + left: 16px; + width: 48px; + height: 48px; + border-radius: 50px; + background-color: var(--color-bg-main); + background-repeat: no-repeat; + background-position: 50% 50%; +} +.webbpm .container-inside .list-group .section-group > div.icon-user::before { + background-image: url(../img/svg/pers-wt.svg); +} +.webbpm .container-inside .list-group .section-group > div.icon-case::before { + background-image: url(../img/svg/case-wt.svg); +} +.webbpm .container-inside .list-group .section-group > div.icon-shield::before { + background-image: url(../img/svg/shield-wt.svg); +} +.webbpm .container-inside .list-group .section-group > div.icon-clip::before { + background-image: url(../img/svg/clip-wt.svg); +} +.webbpm .container-inside .list-group .section-group > div.icon-pers::before { + background-image: url(../img/svg/pers-wt.svg); +} +.webbpm .container-inside .list-group .section-group > div.icon-building::before { + background-image: url(../img/svg/building-wt.svg); +} +.webbpm .container-inside .list-group .section-group > div .muted { + margin-top: 12px; +} +.webbpm .container-inside .list-group .section-group > div .muted .detailed { + color: var(--color-text-primary); + font-family: 'InterB'; +} + +.webbpm .container-inside .list-group .pass-list { + position: relative; + display: flex; + flex-direction: row; + padding-top: 60px; +} +.webbpm .container-inside .list-group .pass-list::before { + content: ""; + position: absolute; + width: calc(80% + 40px); + height: 4px; + top: 18px; + left: 0; + background-color: var(--color-link-hover); +} +.webbpm .container-inside .list-group .pass-list > div { + position: relative; + width: 20%; +} +.webbpm .container-inside .list-group .pass-list > div::before { + content: ""; + position: absolute; + width: 40px; + height: 40px; + top: -60px; + left: 0; + border-radius: 2px; + border: 4px solid var(--color-link-hover); + background-color: var(--bg-light); + transform: rotate(45deg); +} +.webbpm .container-inside .list-group .pass-list > div::after { + content: ""; + position: absolute; + font-family: 'InterB'; + top: -50px; + left: 15px; +} +.webbpm .container-inside .list-group .pass-list > div:nth-child(1)::after { + content: "1"; +} +.webbpm .container-inside .list-group .pass-list > div:nth-child(2)::after { + content: "2"; +} +.webbpm .container-inside .list-group .pass-list > div:nth-child(3)::after { + content: "3"; +} +.webbpm .container-inside .list-group .pass-list > div:nth-child(4)::after { + content: "4"; +} +.webbpm .container-inside .list-group .pass-list > div:nth-child(5)::after { + content: "5"; +} +.webbpm .container-inside .list-group .pass-list > div + div { + margin-left: 40px; +} + +.webbpm .container-inside .list-group .msg-list { + display: flex; + flex-direction: row; + align-items: center; + justify-content: center; + padding: 8px; +} +.webbpm .container-inside .list-group .msg-list span { + width: 32px; + height: 32px; + margin: 0 16px 0 0; + background: url(../img/svg/info-gr.svg) no-repeat 0 0; +} + +.webbpm .container-inside .list-group .docs-list { + position: relative; + display: flex; + flex-direction: row; +} +.webbpm .container-inside .list-group .docs-list > div { + position: relative; + display: flex; + flex-direction: row; + align-items: center; + width: 20%; +} +.webbpm .container-inside .list-group .docs-list > div a { + width: 24px; + height: 24px; + padding-right: 8px; + background: url(../img/svg/download-24x24.svg) no-repeat 0 0; +} +.webbpm .container-inside .list-group .docs-list > div + div { + margin-left: 40px; +} + +.webbpm .container-inside .list-group.lk-what { + padding-top: var(--l-indent-huge); + padding-bottom: var(--l-indent-huge); +} +.webbpm .container-inside .list-group.lk-what::after { + content: ""; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + opacity: 0.12; + background: url(../img/bg-star.png) no-repeat calc(100% + 200px) 0px transparent; + z-index: 0; +} +.webbpm .container-inside .list-group.lk-what > div { + position: relative; + z-index: 1; +} + +.webbpm .container-inside .list-group.lk-access { + color: var(--white); + padding-top: var(--l-indent-big); + padding-bottom: var(--l-indent-big); + background-color: var(--color-bg-main); +} +.webbpm .container-inside .list-group.lk-info { + padding-top: var(--l-indent-big); + padding-bottom: var(--l-indent-big); +} +.webbpm .container-inside .list-group.lk-pass { + padding-top: var(--l-indent-big); + padding-bottom: var(--l-indent-big); + background-color: var(--bg-light); +} +.webbpm .container-inside .list-group.lk-when { + color: var(--white); + padding-top: var(--l-indent-big); + padding-bottom: var(--l-indent-big); + background-color: var(--color-bg-main); +} +.webbpm .container-inside .list-group.lk-msg { + background-color: var(--border-light); +} +.webbpm .container-inside .list-group.lk-limits { + padding-top: var(--l-indent-big); + padding-bottom: var(--l-indent-big); +} +.webbpm .container-inside .list-group.lk-docs { + flex: 1; + color: var(--white); + padding-top: var(--l-indent-huge); + padding-bottom: var(--l-indent-huge); + background-color: var(--color-text-primary); +} +.webbpm .container-inside .list-group.lk-alert { + padding-top: var(--l-indent-big); + padding-bottom: var(--l-indent-big); + background-color: var(--bg-light); +} +.webbpm .container-inside .list-group.lk-footer { + padding-top: var(--indent-small); + padding-bottom: var(--indent-small); + background-color: var(--color-text-primary); +} + +.webbpm.ervu_lkrp_fl .container-inside .list-group.lk-what .title { + color: var(--color-link); + padding: 0; + margin-bottom: var(--indent-small); +} +.webbpm.ervu_lkrp_fl .container-inside .list-group.lk-what .title::after { + content: url(../img/svg/star.svg); + top: 18px; + position: relative; + margin-left: var(--l-indent-big); +} +.webbpm.ervu_lkrp_fl .container-inside .list-group.lk-what .title + .short-text { + max-width: 25%; +} +.webbpm.ervu_lkrp_fl .container-inside .list-group.lk-what .title ~ .subtitle { + margin-top: var(--l-indent-big); +} +.webbpm.ervu_lkrp_fl .container-inside .list-group.lk-info .section-group > div { + justify-content: center; +} +.webbpm.ervu_lkrp_fl .container-inside .list-group.lk-pass .subtitle { + margin-bottom: 0; +} +.webbpm.ervu_lkrp_fl .container-inside .list-group.lk-pass .subtitle + div { + margin-top: var(--indent-small); + margin-bottom: var(--l-indent-big); +} +.webbpm.ervu_lkrp_fl .container-inside .list-group.lk-pass .pass-list::before { + display: none; +} +.webbpm.ervu_lkrp_fl .container-inside .list-group.lk-pass .pass-list > div { + position: relative; + width: 33.33%; +} +.webbpm.ervu_lkrp_fl .container-inside .list-group.lk-msg { + color: var(--color-link); + font-family: 'InterSB'; + background-color: var(--bg-form); +} +.webbpm.ervu_lkrp_fl .container-inside .list-group.lk-msg span { + background: url(../img/svg/info.svg) no-repeat 0 4px; +} +.webbpm.ervu_lkrp_fl .container-inside .list-group.lk-limits .subtitle { + margin-bottom: 0; +} +.webbpm.ervu_lkrp_fl .container-inside .list-group.lk-limits .subtitle + div { + margin-top: var(--indent-small); + margin-bottom: var(--l-indent-big); +} +.webbpm.ervu_lkrp_fl .container-inside .list-group.lk-limits .scheme { + width: 100%; + height: 204px; + background: url(../img/svg/scheme.svg) no-repeat 0 0; +} +.webbpm.ervu_lkrp_fl .container-inside .list-group.lk-alert > .short-text { + margin-bottom: var(--l-indent-big); +} +.webbpm.ervu_lkrp_fl .container-inside .list-group.lk-alert .alert-block { + position: relative; + padding: var(--indent-small) 64px var(--indent-small) var(--indent-small); + border-radius: 4px; + border: 2px solid var(--border-light); +} +.webbpm.ervu_lkrp_fl .container-inside .list-group.lk-alert .alert-block::after { + content: url(../img/svg/info.svg); + position: absolute; + top: var(--indent-small); + right: var(--indent-small); +} +.webbpm.ervu_lkrp_fl .container-inside .list-group.lk-alert .alert-block > div + div { + margin-top: var(--indent-small); +} +.webbpm.ervu_lkrp_fl .container-inside .list-group.lk-alert .alert-block > div:last-child { + color: var(--color-link); +} + +/*@media ((max-width: 780px) or ((orientation: landscape) and (max-device-width : 1024px))) {*/ +@media (max-width: 1024px) { + .container-inside .short-text { + max-width: 100% !important; + } + + .webbpm .container-inside .list-group .paragraph { + flex-direction: column; + } + .webbpm .container-inside .list-group .paragraph [class*="paragraph-"] { + width: auto; + margin-left: 0; + } + .webbpm .container-inside .list-group .paragraph [class*="paragraph-"] + [class*="paragraph-"] { + margin-top: var(--indent-mini); + margin-left: 0; + } + .webbpm .container-inside .list-group .pass-list { + flex-direction: column; + padding-top: 0; + } + .webbpm .container-inside .list-group .pass-list::before { + display: none; + } + .webbpm .container-inside .list-group .pass-list > div { + display: flex; + align-items: center; + width: auto !important; + padding-left: 60px; + min-height: 40px; + } + .webbpm .container-inside .list-group .pass-list > div::before { + top: 0; + } + .webbpm .container-inside .list-group .pass-list > div::after { + top: 10px; + } + .webbpm .container-inside .list-group .pass-list > div + div { + margin-left: 0; + margin-top: var(--indent-mini); + } +} + +@media (max-width: 480px) { + .webbpm .container-inside .list-group .docs-list { + flex-direction: column; + } + .webbpm .container-inside .list-group .docs-list > div { + width: 100%; + } + .webbpm .container-inside .list-group .docs-list > div + div { + margin-left: 0; + margin-top: var(--indent-mini); + } +} +/*------------- end - HOME -------------*/ + +.cert-check-content { + font-family: 'Golos'; + font-size: var(--size-text-secondary); + padding: var(--indent-mini) var(--w-screen) var(--indent-mini) calc(var(--w-screen) + 38px); + background-color: var(--bg-warn); +} +.cert-check-text { + position: relative; + padding-left: 40px; +} +.cert-check-text::before { + position: absolute; + content: url(../img/svg/info.svg); + left: 0; + top: calc((100% - 24px) / 2); +} +.text-header { + color: var(--color-link); + font-family: 'GolosB'; + font-size: var(--size-text-primary); + margin-bottom: 4px; +} +.plain-text { + margin-bottom: 0; +} diff --git a/frontend/src/resources/css/inbox-lkrp.css b/frontend/src/resources/css/inbox-lkrp.css index c01a8d0..091ea77 100644 --- a/frontend/src/resources/css/inbox-lkrp.css +++ b/frontend/src/resources/css/inbox-lkrp.css @@ -29,6 +29,25 @@ font-style: normal; } +@font-face { + font-family: 'GolosM'; + src: url('../fonts/GolosText-Medium.ttf'); + font-weight: 400; + font-style: normal; +} +@font-face { + font-family: 'GolosDB'; + src: url('../fonts/GolosText-DemiBold.ttf'); + font-weight: 400; + font-style: normal; +} +@font-face { + font-family: 'GolosB'; + src: url('../fonts/GolosText-Bold.ttf'); + font-weight: 400; + font-style: normal; +} + body.webbpm.ervu_lkrp_fl { -ms-text-size-adjust: 100%; -moz-text-size-adjust: 100%; @@ -64,6 +83,15 @@ body.webbpm.ervu_lkrp_fl { --indent-small: 24px; --indent-mini: 16px; --indent-extra-mini: 10px; + + + --l-size-text-maintitle: 54px; + --l-size-text-title: 40px; + --l-size-text-subtitle: 32px; + --l-size-text-primary: 20px; + + --l-indent-huge: 72px; + --l-indent-big: 52px; } .webbpm.ervu_lkrp_fl a { @@ -210,6 +238,13 @@ body.webbpm.ervu_lkrp_fl { --indent-big: 24px; --indent-medium: 24px; --indent-small: 16px; + + --l-size-text-maintitle: 32px; + --l-size-text-title: 28px; + --l-size-text-subtitle: 24px; + + --l-indent-huge: 32px; + --l-indent-big: 24px; } } @@ -223,6 +258,13 @@ body.webbpm.ervu_lkrp_fl { --indent-big: 24px; --indent-medium: 16px; --indent-small: 16px; + + --l-size-text-maintitle: 28px; + --l-size-text-title: 24px; + --l-size-text-subtitle: 20px; + + --l-indent-huge: 24px; + --l-indent-big: 24px; } .webbpm.ervu_lkrp_fl .header .header-logo .main-page { diff --git a/frontend/src/resources/fonts/GolosText-Bold.ttf b/frontend/src/resources/fonts/GolosText-Bold.ttf new file mode 100644 index 0000000..3a41f9b Binary files /dev/null and b/frontend/src/resources/fonts/GolosText-Bold.ttf differ diff --git a/frontend/src/resources/fonts/GolosText-DemiBold.ttf b/frontend/src/resources/fonts/GolosText-DemiBold.ttf new file mode 100644 index 0000000..5514593 Binary files /dev/null and b/frontend/src/resources/fonts/GolosText-DemiBold.ttf differ diff --git a/frontend/src/resources/fonts/GolosText-Medium.ttf b/frontend/src/resources/fonts/GolosText-Medium.ttf new file mode 100644 index 0000000..bb2c29b Binary files /dev/null and b/frontend/src/resources/fonts/GolosText-Medium.ttf differ diff --git a/frontend/src/resources/fonts/GolosText-Regular.ttf b/frontend/src/resources/fonts/GolosText-Regular.ttf new file mode 100644 index 0000000..7e0f0e5 Binary files /dev/null and b/frontend/src/resources/fonts/GolosText-Regular.ttf differ diff --git a/frontend/src/resources/img/bg-star.png b/frontend/src/resources/img/bg-star.png new file mode 100644 index 0000000..088b855 Binary files /dev/null and b/frontend/src/resources/img/bg-star.png differ diff --git a/frontend/src/resources/img/svg/case-24x24.svg b/frontend/src/resources/img/svg/case-24x24.svg new file mode 100644 index 0000000..b7d08dc --- /dev/null +++ b/frontend/src/resources/img/svg/case-24x24.svg @@ -0,0 +1,3 @@ + + + diff --git a/frontend/src/resources/img/svg/checklist-32x32.svg b/frontend/src/resources/img/svg/checklist-32x32.svg new file mode 100644 index 0000000..636c87e --- /dev/null +++ b/frontend/src/resources/img/svg/checklist-32x32.svg @@ -0,0 +1,4 @@ + + + + diff --git a/frontend/src/resources/img/svg/clock-32x32.svg b/frontend/src/resources/img/svg/clock-32x32.svg new file mode 100644 index 0000000..aa8dc19 --- /dev/null +++ b/frontend/src/resources/img/svg/clock-32x32.svg @@ -0,0 +1,4 @@ + + + + diff --git a/frontend/src/resources/img/svg/download-24x24.svg b/frontend/src/resources/img/svg/download-24x24.svg new file mode 100644 index 0000000..322085c --- /dev/null +++ b/frontend/src/resources/img/svg/download-24x24.svg @@ -0,0 +1,3 @@ + + + diff --git a/frontend/src/resources/img/svg/esia-24x24.svg b/frontend/src/resources/img/svg/esia-24x24.svg new file mode 100644 index 0000000..d67a5b4 --- /dev/null +++ b/frontend/src/resources/img/svg/esia-24x24.svg @@ -0,0 +1,4 @@ + + + + diff --git a/frontend/src/resources/img/svg/fl.svg b/frontend/src/resources/img/svg/fl.svg new file mode 100644 index 0000000..1ab6dfd --- /dev/null +++ b/frontend/src/resources/img/svg/fl.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/frontend/src/resources/img/svg/info-gr.svg b/frontend/src/resources/img/svg/info-gr.svg new file mode 100644 index 0000000..66d332d --- /dev/null +++ b/frontend/src/resources/img/svg/info-gr.svg @@ -0,0 +1,4 @@ + + + + diff --git a/frontend/src/resources/img/svg/romb-24x24.svg b/frontend/src/resources/img/svg/romb-24x24.svg new file mode 100644 index 0000000..52c562c --- /dev/null +++ b/frontend/src/resources/img/svg/romb-24x24.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/frontend/src/resources/img/svg/scheme.svg b/frontend/src/resources/img/svg/scheme.svg new file mode 100644 index 0000000..d40c6e9 --- /dev/null +++ b/frontend/src/resources/img/svg/scheme.svg @@ -0,0 +1,221 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/frontend/src/resources/img/svg/star.svg b/frontend/src/resources/img/svg/star.svg new file mode 100644 index 0000000..04339c4 --- /dev/null +++ b/frontend/src/resources/img/svg/star.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/frontend/src/resources/img/svg/text-32x32.svg b/frontend/src/resources/img/svg/text-32x32.svg new file mode 100644 index 0000000..121c26a --- /dev/null +++ b/frontend/src/resources/img/svg/text-32x32.svg @@ -0,0 +1,4 @@ + + + + diff --git a/frontend/src/resources/img/svg/ul.svg b/frontend/src/resources/img/svg/ul.svg new file mode 100644 index 0000000..2ebaa04 --- /dev/null +++ b/frontend/src/resources/img/svg/ul.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/frontend/src/resources/img/svg/user-24x24.svg b/frontend/src/resources/img/svg/user-24x24.svg new file mode 100644 index 0000000..80fe838 --- /dev/null +++ b/frontend/src/resources/img/svg/user-24x24.svg @@ -0,0 +1,4 @@ + + + + diff --git a/frontend/src/resources/landing/home.css b/frontend/src/resources/landing/home.css index 77e21c6..dc43696 100644 --- a/frontend/src/resources/landing/home.css +++ b/frontend/src/resources/landing/home.css @@ -624,17 +624,17 @@ a.btn:is(:hover, :focus, :active) { color: var(--color-link); } -.browser-check-content { +.cert-check-content { font-family: 'Golos'; font-size: var(--size-text-secondary); padding: var(--indent-mini) var(--w-screen) var(--indent-mini) calc(var(--w-screen) + 38px); background-color: var(--bg-warn); } -.browser-check-text { +.cert-check-text { position: relative; padding-left: 40px; } -.browser-check-text::before { +.cert-check-text::before { position: absolute; content: url(img/svg/info.svg); left: 0; diff --git a/frontend/src/resources/template/app/component/app_header.html b/frontend/src/resources/template/app/component/app_header.html index e5cd4d7..1361200 100644 --- a/frontend/src/resources/template/app/component/app_header.html +++ b/frontend/src/resources/template/app/component/app_header.html @@ -1,9 +1,13 @@ -