diff --git a/backend/pom.xml b/backend/pom.xml index d77368be..480c7e01 100644 --- a/backend/pom.xml +++ b/backend/pom.xml @@ -5,7 +5,7 @@ ru.micord.ervu.lkrp ul - 1.9.11 + 1.9.12-SNAPSHOT ru.micord.ervu.lkrp.ul backend diff --git a/backend/src/main/java/ru/micord/ervu/audit/constants/AuditConstants.java b/backend/src/main/java/ru/micord/ervu/audit/constants/AuditConstants.java index 1bc3792a..bc06ec83 100644 --- a/backend/src/main/java/ru/micord/ervu/audit/constants/AuditConstants.java +++ b/backend/src/main/java/ru/micord/ervu/audit/constants/AuditConstants.java @@ -2,7 +2,6 @@ package ru.micord.ervu.audit.constants; import java.util.Map; -import java.util.Optional; /** * @author Adel Kalimullin @@ -17,7 +16,8 @@ public final class AuditConstants { private static final Map routeDescriptions = Map.of( "/", "Личный кабинет ЮР лица", "/mydata", "Информация об организации", - "/filesentlog", "Журнал взаимодействия" + "/filesentlog", "Журнал взаимодействия", + "/home", "Домашняя страница ЛК РП ЮЛ" ); private static final Map downloadTypes = Map.of( @@ -29,13 +29,10 @@ public final class AuditConstants { } public static String getRouteDescription(String route) { - return Optional.ofNullable(routeDescriptions.get(route)) - .orElseThrow(() -> new IllegalArgumentException("Invalid route :" + route)); + return routeDescriptions.getOrDefault(route, "Неизвестный маршрут"); } public static String getDownloadType(int formatRegistry) { - return Optional.ofNullable(downloadTypes.get(formatRegistry)) - .orElseThrow( - () -> new IllegalArgumentException("Invalid formatRegistry :" + formatRegistry)); + return downloadTypes.getOrDefault(formatRegistry, "Неизвестный формат"); } } diff --git a/backend/src/main/java/ru/micord/ervu/security/SecurityConfig.java b/backend/src/main/java/ru/micord/ervu/security/SecurityConfig.java index 43236f99..5c57e79b 100644 --- a/backend/src/main/java/ru/micord/ervu/security/SecurityConfig.java +++ b/backend/src/main/java/ru/micord/ervu/security/SecurityConfig.java @@ -33,6 +33,7 @@ public class SecurityConfig { private static final String[] PERMIT_ALL = new String[] { "/version", "/esia/url", "/esia/auth", "esia/refresh", "/esia/logout" }; + private static final String DENY_ALL = "/employee/document"; @Autowired private JwtAuthenticationFilter jwtAuthenticationFilter; @Autowired @@ -57,11 +58,11 @@ public class SecurityConfig { // Use only the handle() method of XorCsrfTokenRequestAttributeHandler and the // default implementation of resolveCsrfTokenValue() from CsrfTokenRequestHandler CsrfTokenRequestHandler requestHandler = delegate::handle; - http.authorizeHttpRequests( - (authorizeHttpRequests) -> authorizeHttpRequests.requestMatchers(PERMIT_ALL) - .permitAll() - .anyRequest() - .authenticated()) + http.authorizeHttpRequests((authorizeHttpRequests) -> authorizeHttpRequests + .requestMatchers(DENY_ALL).denyAll() + .requestMatchers(PERMIT_ALL).permitAll() + .anyRequest().authenticated() + ) .csrf((csrf) -> csrf.csrfTokenRepository(tokenRepository) .csrfTokenRequestHandler(requestHandler) .sessionAuthenticationStrategy(new NullAuthenticatedSessionStrategy())) diff --git a/backend/src/main/java/ru/micord/ervu/security/esia/EsiaAuthInfoStore.java b/backend/src/main/java/ru/micord/ervu/security/esia/EsiaAuthInfoStore.java index 4f6284d4..0b2ddf56 100644 --- a/backend/src/main/java/ru/micord/ervu/security/esia/EsiaAuthInfoStore.java +++ b/backend/src/main/java/ru/micord/ervu/security/esia/EsiaAuthInfoStore.java @@ -8,10 +8,13 @@ import java.util.concurrent.CopyOnWriteArrayList; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import ru.micord.ervu.security.esia.exception.EsiaException; +import org.springframework.context.support.MessageSourceAccessor; import ru.micord.ervu.security.esia.model.ExpiringState; import ru.micord.ervu.security.esia.model.ExpiringToken; +import ru.cg.webbpm.modules.core.runtime.api.LocalizedException; +import ru.cg.webbpm.modules.core.runtime.api.MessageBundleUtils; + /** * @author Eduard Tihomirov */ @@ -20,6 +23,8 @@ public class EsiaAuthInfoStore { private static final Map ACCESS_TOKENS_MAP = new ConcurrentHashMap<>(); private static final Map REFRESH_TOKENS_MAP = new ConcurrentHashMap<>(); private static final Map> PRNS_UUID_STATE_MAP = new ConcurrentHashMap<>(); + private static final MessageSourceAccessor MESSAGE_SOURCE = MessageBundleUtils.createAccessor( + "messages/common_errors_messages"); public static void addAccessToken(String prnOid, String token, long expiresIn) { if (token != null) { @@ -89,8 +94,11 @@ public class EsiaAuthInfoStore { if (states == null) { states = new CopyOnWriteArrayList<>(); } + else { + states.removeIf(ExpiringState::isExpired); + } if (states.size() >= attemptsCount) { - throw new EsiaException("The number of login attempts has been exceeded."); + throw new LocalizedException("login_attempts_exceeded", MESSAGE_SOURCE); } states.add(newState); return states; diff --git a/backend/src/main/resources/messages/common_errors_messages.properties b/backend/src/main/resources/messages/common_errors_messages.properties index 0a242109..0dae4732 100644 --- a/backend/src/main/resources/messages/common_errors_messages.properties +++ b/backend/src/main/resources/messages/common_errors_messages.properties @@ -1,2 +1,3 @@ kafka_reply_timeout=Превышено время ожидания ответа от сервера. -access_denied=Доступ запрещен. Пользователь должен быть включен в группу "Сотрудник, ответственный за военно-учетную работу" в ЕСИА \ No newline at end of file +access_denied=Доступ запрещен. Пользователь должен быть включен в группу "Сотрудник, ответственный за военно-учетную работу" в ЕСИА +login_attempts_exceeded=Слишком большое количество попыток авторизоваться в ЕСИА за короткий промежуток времени. Рекомендуем почистить cookie и cash браузера, после повторить авторизацию. \ No newline at end of file diff --git a/backend/src/main/resources/messages/common_errors_messages_ru_RU.properties b/backend/src/main/resources/messages/common_errors_messages_ru_RU.properties index 0a242109..0dae4732 100644 --- a/backend/src/main/resources/messages/common_errors_messages_ru_RU.properties +++ b/backend/src/main/resources/messages/common_errors_messages_ru_RU.properties @@ -1,2 +1,3 @@ kafka_reply_timeout=Превышено время ожидания ответа от сервера. -access_denied=Доступ запрещен. Пользователь должен быть включен в группу "Сотрудник, ответственный за военно-учетную работу" в ЕСИА \ No newline at end of file +access_denied=Доступ запрещен. Пользователь должен быть включен в группу "Сотрудник, ответственный за военно-учетную работу" в ЕСИА +login_attempts_exceeded=Слишком большое количество попыток авторизоваться в ЕСИА за короткий промежуток времени. Рекомендуем почистить cookie и cash браузера, после повторить авторизацию. \ No newline at end of file diff --git a/config/micord.env b/config/micord.env index 070d9349..b7a13457 100644 --- a/config/micord.env +++ b/config/micord.env @@ -28,6 +28,7 @@ ESIA_LOGOUT_REDIRECT_URL=https://lkrp-dev.micord.ru/ul/home.html ESIA_UPLOAD_DATA_ROLE=MNSV89_UPLOAD_DATA ESIA_CLIENT_CERT_HASH=04508B4B0B58776A954A0E15F574B4E58799D74C61EE020B3330716C203E3BDD ESIA_AUTH_INFO_CLEAR_CRON=0 0 */1 * * * +ESIA_MARKER_VER=1 SIGN_URL=https://ervu-sign-dev.k8s.micord.ru/sign SIGN_VERIFY_URL=https://ervu-sign-dev.k8s.micord.ru/verify diff --git a/distribution/pom.xml b/distribution/pom.xml index c529c624..dcdd82b3 100644 --- a/distribution/pom.xml +++ b/distribution/pom.xml @@ -4,7 +4,7 @@ ru.micord.ervu.lkrp ul - 1.9.11 + 1.9.12-SNAPSHOT ru.micord.ervu.lkrp.ul diff --git a/frontend/pom.xml b/frontend/pom.xml index 218a1674..9fa0063a 100644 --- a/frontend/pom.xml +++ b/frontend/pom.xml @@ -4,7 +4,7 @@ ru.micord.ervu.lkrp ul - 1.9.11 + 1.9.12-SNAPSHOT ru.micord.ervu.lkrp.ul diff --git a/frontend/src/resources/css/components-lkrp.css b/frontend/src/resources/css/components-lkrp.css index f2a45121..180687a3 100644 --- a/frontend/src/resources/css/components-lkrp.css +++ b/frontend/src/resources/css/components-lkrp.css @@ -944,104 +944,104 @@ } /*---------------- HOME ----------------*/ -.webbpm .header-landing { +.webbpm.ervu_lkrp_ul .header-landing { background-color: var(--color-text-primary) !important; z-index: 1; } -.webbpm .header-landing > div { +.webbpm.ervu_lkrp_ul .header-landing > div { display: flex; flex-direction: row; align-items: center; font-family: 'InterSB'; } -.webbpm .header-landing .header-logo { +.webbpm.ervu_lkrp_ul .header-landing .header-logo { width: 62px; height: 40px; background: url(../img/svg/mil-logo.svg) no-repeat 0 50%; } -.webbpm .header-landing .header-title { +.webbpm.ervu_lkrp_ul .header-landing .header-title { color: var(--white); font-size: var(--size-text-secondary); margin-left: var(--indent-mini); } -.webbpm .container-inside .short-text { +.webbpm.ervu_lkrp_ul .container-inside .short-text { max-width: 60%; } -.webbpm .container-inside .paragraph-left .short-text { +.webbpm.ervu_lkrp_ul .container-inside .paragraph-left .short-text { max-width: 70%; } -.webbpm .container-inside .list-group { +.webbpm.ervu_lkrp_ul .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 { +.webbpm.ervu_lkrp_ul .container-inside .list-group .btn { width: max-content; } -.webbpm .container-inside .list-group .title { +.webbpm.ervu_lkrp_ul .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 { +.webbpm.ervu_lkrp_ul.ervu_lkrp_ul .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 { +.webbpm.ervu_lkrp_ul .container-inside .list-group .muted { color: var(--color-light); } -.webbpm .container-inside .list-group .paragraph { +.webbpm.ervu_lkrp_ul .container-inside .list-group .paragraph { display: flex; flex-direction: row; } -.webbpm .container-inside .list-group .paragraph .paragraph-left { +.webbpm.ervu_lkrp_ul .container-inside .list-group .paragraph .paragraph-left { width: 40%; } -.webbpm .container-inside .list-group .paragraph .paragraph-right { +.webbpm.ervu_lkrp_ul .container-inside .list-group .paragraph .paragraph-right { width: 60%; } -.webbpm .container-inside .list-group .paragraph .paragraph-half { +.webbpm.ervu_lkrp_ul .container-inside .list-group .paragraph .paragraph-half { width: 50%; } -.webbpm .container-inside .list-group .paragraph .paragraph-third { +.webbpm.ervu_lkrp_ul .container-inside .list-group .paragraph .paragraph-third { width: 33.33%; } -.webbpm .container-inside .list-group .paragraph [class*="paragraph-"] + [class*="paragraph-"] { +.webbpm.ervu_lkrp_ul .container-inside .list-group .paragraph [class*="paragraph-"] + [class*="paragraph-"] { margin-left: 40px; } -.webbpm .container-inside .list-group .paragraph .text { +.webbpm.ervu_lkrp_ul .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 { +.webbpm.ervu_lkrp_ul .container-inside .list-group .paragraph .icon-checklist, +.webbpm.ervu_lkrp_ul .container-inside .list-group .paragraph .icon-clock, +.webbpm.ervu_lkrp_ul .container-inside .list-group .paragraph .icon-text { padding-top: 44px; } -.webbpm .container-inside .list-group .paragraph .icon-checklist { +.webbpm.ervu_lkrp_ul .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 { +.webbpm.ervu_lkrp_ul .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 { +.webbpm.ervu_lkrp_ul .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 { +.webbpm.ervu_lkrp_ul .container-inside .list-group .list > div { position: relative; padding-left: 36px; } -.webbpm .container-inside .list-group .list > div + div { +.webbpm.ervu_lkrp_ul .container-inside .list-group .list > div + div { margin-top: var(--indent-mini); } -.webbpm .container-inside .list-group .list > div::after { +.webbpm.ervu_lkrp_ul .container-inside .list-group .list > div::after { content: ""; position: absolute; width: 24px; @@ -1049,23 +1049,23 @@ top: 0; left: 0; } -.webbpm .container-inside .list-group .list > div.esia::after { +.webbpm.ervu_lkrp_ul .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 { +.webbpm.ervu_lkrp_ul .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 { +.webbpm.ervu_lkrp_ul .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 { +.webbpm.ervu_lkrp_ul .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 { +.webbpm.ervu_lkrp_ul .container-inside .list-group .list ~ .btn-group { margin-top: var(--indent-medium); } -.webbpm .container-inside .list-group .section-group > div { +.webbpm.ervu_lkrp_ul .container-inside .list-group .section-group > div { display: flex; flex-direction: column; min-height: 80px; @@ -1075,10 +1075,10 @@ border-radius: 4px; background-color: var(--bg-form); } -.webbpm .container-inside .list-group .section-group > div:last-child { +.webbpm.ervu_lkrp_ul .container-inside .list-group .section-group > div:last-child { margin-bottom: 0; } -.webbpm .container-inside .list-group .section-group > div::before { +.webbpm.ervu_lkrp_ul .container-inside .list-group .section-group > div::before { content: ""; position: absolute; left: 16px; @@ -1089,39 +1089,39 @@ background-repeat: no-repeat; background-position: 50% 50%; } -.webbpm .container-inside .list-group .section-group > div.icon-user::before { +.webbpm.ervu_lkrp_ul .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 { +.webbpm.ervu_lkrp_ul .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 { +.webbpm.ervu_lkrp_ul .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 { +.webbpm.ervu_lkrp_ul .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 { +.webbpm.ervu_lkrp_ul .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 { +.webbpm.ervu_lkrp_ul .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 { +.webbpm.ervu_lkrp_ul .container-inside .list-group .section-group > div .muted { margin-top: 12px; } -.webbpm .container-inside .list-group .section-group > div .muted .detailed { +.webbpm.ervu_lkrp_ul .container-inside .list-group .section-group > div .muted .detailed { color: var(--color-text-primary); font-family: 'InterB'; } -.webbpm .container-inside .list-group .pass-list { +.webbpm.ervu_lkrp_ul .container-inside .list-group .pass-list { position: relative; display: flex; flex-direction: row; padding-top: 60px; } -.webbpm .container-inside .list-group .pass-list::before { +.webbpm.ervu_lkrp_ul .container-inside .list-group .pass-list::before { content: ""; position: absolute; width: calc(80% + 40px); @@ -1130,11 +1130,11 @@ left: 0; background-color: var(--color-link-hover); } -.webbpm .container-inside .list-group .pass-list > div { +.webbpm.ervu_lkrp_ul .container-inside .list-group .pass-list > div { position: relative; width: 20%; } -.webbpm .container-inside .list-group .pass-list > div::before { +.webbpm.ervu_lkrp_ul .container-inside .list-group .pass-list > div::before { content: ""; position: absolute; width: 40px; @@ -1146,73 +1146,73 @@ background-color: var(--bg-light); transform: rotate(45deg); } -.webbpm .container-inside .list-group .pass-list > div::after { +.webbpm.ervu_lkrp_ul .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 { +.webbpm.ervu_lkrp_ul .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 { +.webbpm.ervu_lkrp_ul .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 { +.webbpm.ervu_lkrp_ul .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 { +.webbpm.ervu_lkrp_ul .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 { +.webbpm.ervu_lkrp_ul .container-inside .list-group .pass-list > div:nth-child(5)::after { content: "5"; } -.webbpm .container-inside .list-group .pass-list > div + div { +.webbpm.ervu_lkrp_ul .container-inside .list-group .pass-list > div + div { margin-left: 40px; } -.webbpm .container-inside .list-group .msg-list { +.webbpm.ervu_lkrp_ul .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 { +.webbpm.ervu_lkrp_ul .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 { +.webbpm.ervu_lkrp_ul .container-inside .list-group .docs-list { position: relative; display: flex; flex-direction: row; } -.webbpm .container-inside .list-group .docs-list > div { +.webbpm.ervu_lkrp_ul .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 { +.webbpm.ervu_lkrp_ul .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 { +.webbpm.ervu_lkrp_ul .container-inside .list-group .docs-list > div + div { margin-left: 40px; } -.webbpm .container-inside .list-group.lk-what { +.webbpm.ervu_lkrp_ul .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 { +.webbpm.ervu_lkrp_ul .container-inside .list-group.lk-what::after { content: ""; position: absolute; top: 0; @@ -1223,211 +1223,147 @@ background: url(../img/bg-star.png) no-repeat calc(100% + 200px) 0px transparent; z-index: 0; } -.webbpm .container-inside .list-group.lk-what > div { +.webbpm.ervu_lkrp_ul .container-inside .list-group.lk-what > div { position: relative; z-index: 1; } -.webbpm .container-inside .list-group.lk-access { +.webbpm.ervu_lkrp_ul .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 { +.webbpm.ervu_lkrp_ul .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 { +.webbpm.ervu_lkrp_ul .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 { +.webbpm.ervu_lkrp_ul .container-inside .list-group.lk-when { color: var(--white); padding-top: var(--l-indent-big); padding-bottom: var(--indentl--big); background-color: var(--color-bg-main); } -.webbpm .container-inside .list-group.lk-msg { +.webbpm.ervu_lkrp_ul .container-inside .list-group.lk-msg { background-color: var(--border-light); } -.webbpm .container-inside .list-group.lk-limits { +.webbpm.ervu_lkrp_ul .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 { +.webbpm.ervu_lkrp_ul .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 { +.webbpm.ervu_lkrp_ul .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 { +.webbpm.ervu_lkrp_ul .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); - 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 { + .webbpm.ervu_lkrp_ul .landing .container { + top: var(--h-header); + padding: 0; + overflow: auto; + } + .webbpm.ervu_lkrp_ul .landing .container-inside { + overflow: visible; + } + .webbpm.ervu_lkrp_ul .landing .browser-check-content { + padding-left: var(--w-screen); + } + + .webbpm.ervu_lkrp_ul .container-inside .short-text { max-width: 100% !important; } - - .webbpm .container-inside .list-group .paragraph { + .webbpm.ervu_lkrp_ul .container-inside .list-group .paragraph { flex-direction: column; } - .webbpm .container-inside .list-group .paragraph [class*="paragraph-"] { + .webbpm.ervu_lkrp_ul .container-inside .list-group .paragraph [class*="paragraph-"] { width: auto; margin-left: 0; } - .webbpm .container-inside .list-group .paragraph [class*="paragraph-"] + [class*="paragraph-"] { + .webbpm.ervu_lkrp_ul .container-inside .list-group .paragraph [class*="paragraph-"] + [class*="paragraph-"] { margin-top: var(--indent-mini); margin-left: 0; } - .webbpm .container-inside .list-group .pass-list { + .webbpm.ervu_lkrp_ul .container-inside .list-group .pass-list { flex-direction: column; padding-top: 0; } - .webbpm .container-inside .list-group .pass-list::before { + .webbpm.ervu_lkrp_ul .container-inside .list-group .pass-list::before { display: none; } - .webbpm .container-inside .list-group .pass-list > div { + .webbpm.ervu_lkrp_ul .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 { + .webbpm.ervu_lkrp_ul .container-inside .list-group .pass-list > div::before { top: 0; } - .webbpm .container-inside .list-group .pass-list > div::after { + .webbpm.ervu_lkrp_ul .container-inside .list-group .pass-list > div::after { top: 10px; } - .webbpm .container-inside .list-group .pass-list > div + div { + .webbpm.ervu_lkrp_ul .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 { + .webbpm.ervu_lkrp_ul .container-inside .list-group .docs-list { flex-direction: column; } - .webbpm .container-inside .list-group .docs-list > div { + .webbpm.ervu_lkrp_ul .container-inside .list-group .docs-list > div { width: 100%; } - .webbpm .container-inside .list-group .docs-list > div + div { + .webbpm.ervu_lkrp_ul .container-inside .list-group .docs-list > div + div { margin-left: 0; margin-top: var(--indent-mini); } } /*------------- end - HOME -------------*/ -.browser-check-content { +.webbpm.ervu_lkrp_ul .browser-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 { +.webbpm.ervu_lkrp_ul .browser-check-text { position: relative; padding-left: 40px; } -.browser-check-text::before { +.webbpm.ervu_lkrp_ul .browser-check-text::before { position: absolute; content: url(../img/svg/info.svg); left: 0; top: calc((100% - 24px) / 2); } -.text-header { +.webbpm.ervu_lkrp_ul .text-header { color: var(--color-link); font-family: 'GolosB'; font-size: var(--size-text-primary); margin-bottom: 4px; } -.plain-text { +.webbpm.ervu_lkrp_ul .plain-text { margin-bottom: 0; } \ No newline at end of file diff --git a/frontend/src/resources/css/inbox-lkrp.css b/frontend/src/resources/css/inbox-lkrp.css index a20637a8..9a4b45f7 100644 --- a/frontend/src/resources/css/inbox-lkrp.css +++ b/frontend/src/resources/css/inbox-lkrp.css @@ -47,6 +47,12 @@ font-weight: 400; font-style: normal; } +@font-face { + font-family: 'Golos'; + src: url('../fonts/GolosText-Regular.ttf'); + font-weight: 400; + font-style: normal; +} body.webbpm.ervu_lkrp_ul { -ms-text-size-adjust: 100%; diff --git a/frontend/src/resources/landing/pdf/Инструкция_для_технических_специалистов.pdf b/frontend/src/resources/landing/pdf/Инструкция_для_технических_специалистов.pdf new file mode 100644 index 00000000..55d39c3e Binary files /dev/null and b/frontend/src/resources/landing/pdf/Инструкция_для_технических_специалистов.pdf differ diff --git a/frontend/src/resources/template/app/component/home_landing.html b/frontend/src/resources/template/app/component/home_landing.html index 3fc91f2f..264d8cc1 100644 --- a/frontend/src/resources/template/app/component/home_landing.html +++ b/frontend/src/resources/template/app/component/home_landing.html @@ -23,6 +23,9 @@
Необходимо авторизоваться
Потребуется подтвержденная учетная запись организации
Доступ предоставляется тольĸо сотрудниĸу, наделенному соответствующими полномочиями (ролью) на ведения воинсĸого учета внутри организации
+
Войти в Личный кабинет diff --git a/frontend/src/resources/template/webbpm/webbpm.html b/frontend/src/resources/template/webbpm/webbpm.html index c2db9402..37fc525e 100644 --- a/frontend/src/resources/template/webbpm/webbpm.html +++ b/frontend/src/resources/template/webbpm/webbpm.html @@ -1,4 +1,4 @@ -
+
diff --git a/frontend/src/ts/ervu/component/grid/InMemoryStaticGrid.ts b/frontend/src/ts/ervu/component/grid/InMemoryStaticGrid.ts index e2404920..99d7fd14 100644 --- a/frontend/src/ts/ervu/component/grid/InMemoryStaticGrid.ts +++ b/frontend/src/ts/ervu/component/grid/InMemoryStaticGrid.ts @@ -31,9 +31,6 @@ import {AuditConstants, AuditService, FilterInfo} from "../../service/AuditServi changeDetection: ChangeDetectionStrategy.OnPush }) export class InMemoryStaticGrid extends GridV2 { - // todo: remove on updating platform version up to 3.188 - @Visible("false") - public columnFiltersChanged: Event = new Event(); private rpcService: InMemoryStaticGridRpcService; private auditService: AuditService; @@ -154,17 +151,4 @@ export class InMemoryStaticGrid extends GridV2 { public getRowDataSize(): number { return this.rowData ? this.rowData.length : 0; } - - // todo: remove on updating platform version up to 3.188 - @Visible() - public hasColumnFilters(): boolean { - const filterModel: { [key: string]: any; } = this.gridApi.getFilterModel(); - return !!filterModel && Object.keys(filterModel).length > 0; - } - - // todo: remove on updating platform version up to 3.188 - public columnFilterChanged(event: FilterChangedEvent) { - super.columnFilterChanged(event); - this.columnFiltersChanged.trigger(event); - } } diff --git a/frontend/src/ts/modules/security/guard/auth.guard.ts b/frontend/src/ts/modules/security/guard/auth.guard.ts index a24733f2..15bef83e 100644 --- a/frontend/src/ts/modules/security/guard/auth.guard.ts +++ b/frontend/src/ts/modules/security/guard/auth.guard.ts @@ -51,7 +51,7 @@ export abstract class AuthGuard implements CanActivate { if (error) { let errorMessage = this.messageService.getUnknowErrorMessage(); - let errorCode = this.extractCode(errorDescription); + let errorCode = this.extractCode(error); if (errorCode) { errorMessage = EsiaErrorDetail.getDescription(errorCode); } diff --git a/frontend/webpack.aot.config.js b/frontend/webpack.aot.config.js index 6c88c8bb..0e16cc4a 100644 --- a/frontend/webpack.aot.config.js +++ b/frontend/webpack.aot.config.js @@ -97,8 +97,6 @@ module.exports = { }), new CopyWebpackPlugin([ {from: 'index.webpack.html', to: 'index.html'}, - {from: 'home.html', to: 'home.html'}, - {from: 'browser_check.js', to: 'browser_check.js'}, {from: 'src/resources/img/progress.gif', to: 'src/resources/img/progress.gif'}, {from: 'src/resources/img/logo.png', to: 'src/resources/img/logo.png'}, {from: 'src/resources/app-config.json', to: 'src/resources/app-config.json'}, diff --git a/pom.xml b/pom.xml index 96a7a3cc..34a7327c 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 ru.micord.ervu.lkrp ul - 1.9.11 + 1.9.12-SNAPSHOT pom backend diff --git a/resources/pom.xml b/resources/pom.xml index 8701d770..50aa882f 100644 --- a/resources/pom.xml +++ b/resources/pom.xml @@ -4,7 +4,7 @@ ru.micord.ervu.lkrp ul - 1.9.11 + 1.9.12-SNAPSHOT ru.micord.ervu.lkrp.ul diff --git a/resources/src/main/resources/business-model/Личный кабинет юр лица.page b/resources/src/main/resources/business-model/Личный кабинет юр лица.page index 2df73da3..10164fe3 100644 --- a/resources/src/main/resources/business-model/Личный кабинет юр лица.page +++ b/resources/src/main/resources/business-model/Личный кабинет юр лица.page @@ -804,6 +804,7 @@ 8101e7bf-e6fe-4f6d-82a5-740dce669649 Кнопка 1 false + false false @@ -907,24 +908,7 @@ eventRefs - - - - - behavior - - {"objectId":"8101e7bf-e6fe-4f6d-82a5-740dce669649","packageName":"component.button","className":"Button","type":"TS"} - - - - propertyName - - "successActionEvent" - - - - - + @@ -2640,6 +2624,7 @@ 481669b7-948e-474d-8f53-1d6afd409f98 Text false + false false @@ -3039,24 +3024,7 @@ eventRefs - - - - - behavior - - {"objectId":"3b26aaa6-3639-4a36-8d37-2a4a2d3a2f87","packageName":"component.button","className":"Button","type":"TS"} - - - - propertyName - - "successActionEvent" - - - - - + @@ -3587,6 +3555,7 @@ e52c6ec6-f425-438f-a701-10ecc2664248 Текст false + false false @@ -5113,24 +5082,7 @@ eventRefs - - - - - behavior - - {"objectId":"cc33db1e-2720-4e87-ab51-e32c7a5e0b9e","packageName":"component.button","className":"Button","type":"TS"} - - - - propertyName - - "successActionEvent" - - - - - + @@ -7291,24 +7243,7 @@ eventRefs - - - - - behavior - - {"objectId":"20a9ff21-b90f-4e38-ab85-4826fbc11405","packageName":"component.button","className":"Button","type":"TS"} - - - - propertyName - - "successActionEvent" - - - - - + @@ -9545,24 +9480,7 @@ eventRefs - - - - - behavior - - {"objectId":"f6310258-ec19-4d13-b04d-cfc09d6b5e77","packageName":"component.button","className":"Button","type":"TS"} - - - - propertyName - - "successActionEvent" - - - - - + @@ -11053,6 +10971,7 @@ f4eafa61-1ea3-440a-806b-7b05ec416871 Диалог - сведения направлены true + false false @@ -11106,6 +11025,7 @@ 503d22a0-c099-4593-a199-5c7eb4aa3237 Кнопка false + false false @@ -11216,6 +11136,7 @@ 894c4e19-0bd3-4e13-9bd6-d40ab378ca21 Диалог - что-то пошло не так true + false false @@ -11700,4 +11621,357 @@ + + 86f297f1-ab3d-40e0-ac2f-89cc944b7f0a + 93a1b29d-c3c8-4300-a063-44720562dff3 + Диалог- временное решение для загрузки файла + true + false + + + + closable + + false + + + + cssClasses + + + +"align-center" + + + + +"win-error" + + + + + + + + + + + + 98594cec-0a9b-4cef-af09-e1b71cb2ad9e + d6e0aa92-78ed-470e-8a98-9cce3f30efe5 + Обработка событий-show dialog + false + false + + + + eventRefs + + + + + + behavior + + {"objectId":"8101e7bf-e6fe-4f6d-82a5-740dce669649","packageName":"component.button","className":"Button","type":"TS"} + + + + propertyName + + "successActionEvent" + + + + + + + + + + behavior + + {"objectId":"3b26aaa6-3639-4a36-8d37-2a4a2d3a2f87","packageName":"component.button","className":"Button","type":"TS"} + + + + propertyName + + "successActionEvent" + + + + + + + + + + behavior + + {"objectId":"cc33db1e-2720-4e87-ab51-e32c7a5e0b9e","packageName":"component.button","className":"Button","type":"TS"} + + + + propertyName + + "successActionEvent" + + + + + + + + + + behavior + + {"objectId":"20a9ff21-b90f-4e38-ab85-4826fbc11405","packageName":"component.button","className":"Button","type":"TS"} + + + + propertyName + + "successActionEvent" + + + + + + + + + + behavior + + {"objectId":"f6310258-ec19-4d13-b04d-cfc09d6b5e77","packageName":"component.button","className":"Button","type":"TS"} + + + + propertyName + + "successActionEvent" + + + + + + + + + + + + + + + + + + ifCondition + + + + logicalOperation + + null + + + + + + + thenActions + + + + + + behavior + + {"objectId":"93a1b29d-c3c8-4300-a063-44720562dff3","packageName":"component","className":"Dialog","type":"TS"} + + + + method + + "show" + + + + value + + null + + + + + + + + + + + + 9d1b5af1-0b8f-4b1b-b9a5-c2e6acf72d91 + 03e9410a-8d47-4a74-b0c3-cfb8900004f1 + Вертикальный контейнер + true + false + + + + + + + ba24d307-0b91-4299-ba82-9d0b52384ff2 + 8e234aed-6ad7-4e00-834f-e043f2d29c55 + Текст + false + false + + + + collectible + +false + + + + initialValue + +"Система находится в опытной эксплуатации. Функция загрузки данных от организаций будет доступна позднее." + + + + + + + + + false + + + + fd7e47b9-dce1-4d14-9f3a-580c79f59579 + b32b3411-2032-4713-8c5c-67cb114ad231 + Кнопка + false + true + + + + 9d1b5af1-0b8f-4b1b-b9a5-c2e6acf72d91 + b28dce91-46cb-46fe-a309-ccc2ace6cb34 + Вертикальный контейнер + true + false + + + + + + + 98594cec-0a9b-4cef-af09-e1b71cb2ad9e + 14c11640-a5b2-4aea-a6a7-4b1ff334de7c + Обработка событий-close dialog + false + false + + + + eventRefs + + + + + + behavior + + {"objectId":"b32b3411-2032-4713-8c5c-67cb114ad231","packageName":"component.button","className":"Button","type":"TS"} + + + + propertyName + + "successActionEvent" + + + + + + + + + ifCondition + + + + logicalOperation + + null + + + + + + + thenActions + + + + + + behavior + + {"objectId":"93a1b29d-c3c8-4300-a063-44720562dff3","packageName":"component","className":"Dialog","type":"TS"} + + + + method + + "hide" + + + + value + + null + + + + + + + + + + + + fd7e47b9-dce1-4d14-9f3a-580c79f59579 + b32b3411-2032-4713-8c5c-67cb114ad231 + Кнопка + false + false + + + + caption + +"Закрыть" + + + + + + + d7d54cfb-26b5-4dba-b56f-b6247183c24d + f6703dc0-c93c-4d28-adb7-a04faf79a920 + Горизонтальный контейнер + true + true + + +