From 61aa2cc0f48bca6b50b4d3142e4a4bce0eac1110 Mon Sep 17 00:00:00 2001 From: Eduard Tihomirov Date: Mon, 21 Jul 2025 13:13:58 +0300 Subject: [PATCH] SUPPORT-9269: Fix --- .../service/AccountGridLoadService.java | 36 ++++++++++++++----- .../service/RecruitmentGridService.java | 8 ++--- .../component/service/TreeItemService.java | 8 ++--- 3 files changed, 36 insertions(+), 16 deletions(-) diff --git a/backend/src/main/java/ru/micord/ervu/account_applications/component/service/AccountGridLoadService.java b/backend/src/main/java/ru/micord/ervu/account_applications/component/service/AccountGridLoadService.java index d7fb062e..88c3d244 100644 --- a/backend/src/main/java/ru/micord/ervu/account_applications/component/service/AccountGridLoadService.java +++ b/backend/src/main/java/ru/micord/ervu/account_applications/component/service/AccountGridLoadService.java @@ -16,6 +16,7 @@ import ru.micord.ervu.account_applications.component.model.Account; import ru.micord.ervu.account_applications.component.model.Person; import ru.micord.ervu.account_applications.component.model.dto.SearchRequest; import ru.micord.ervu.account_applications.component.model.dto.SearchResponse; +import ru.micord.ervu.account_applications.dao.RecruitmentDao; import ru.micord.ervu.account_applications.security.context.SecurityContext; import ru.micord.ervu.account_applications.security.model.jwt.UserSession; import ru.micord.ervu.account_applications.security.model.role.ErvuRoleAuthority; @@ -30,15 +31,20 @@ import ru.cg.webbpm.modules.webkit.beans.Behavior; */ @Service public class AccountGridLoadService extends Behavior implements GridService { + private static final String DOMAIN_IDS = "domainIds"; + private static final String DOMAIN_ID = "domainId"; private final SecurityContext securityContext; private final AccountFetchService accountService; - @Value("${ervu.role.admin:#{null}}") - private String ervuAdminRole; + private final RecruitmentDao recruitmentDao; + @Value("${ervu.security.role:#{null}}") + private String ervuSecurityRole; public AccountGridLoadService(SecurityContext securityContext, - AccountFetchService accountService) { + AccountFetchService accountService, + RecruitmentDao recruitmentDao) { this.securityContext = securityContext; this.accountService = accountService; + this.recruitmentDao = recruitmentDao; } @Override @@ -105,16 +111,30 @@ public class AccountGridLoadService extends Behavior implements GridService { Map filterMap = new HashMap<>(); UserSession userSession = securityContext.getUserSession(); Set roles = userSession.roles(); - if (ervuAdminRole == null - || roles.stream().noneMatch(role -> role.getAuthority().equals(ervuAdminRole))) { - filterMap.put("domainId", securityContext.getDomainId()); + if (ervuSecurityRole == null + || roles.stream().noneMatch(role -> role.getAuthority().equals(ervuSecurityRole))) { + List domainIds = recruitmentDao.getRecruitmentIdsWithParentByDomainId(securityContext.getDomainId()); + filterMap.put(DOMAIN_IDS, domainIds.toArray()); } if (filters != null && filters.length > 0) { filterMap.putAll(Arrays.stream(filters) .filter(filter -> filter.getFilterModels() != null && filter.getFilterModels().length > 0) .collect(Collectors.toMap( - filter -> getScriptInObject(filter.componentGuid, StaticFilterComponent.class).name, - filter -> filter.getFilterModels()[0].value, + filter -> { + String filterName = getScriptInObject(filter.componentGuid, StaticFilterComponent.class).name; + if (DOMAIN_ID.equals(filterName)) { + return DOMAIN_IDS; + } + return filterName; + }, + filter -> { + String filterName = getScriptInObject(filter.componentGuid, StaticFilterComponent.class).name; + Object filterValue = filter.getFilterModels()[0].value; + if (DOMAIN_ID.equals(filterName)) { + return recruitmentDao.getRecruitmentIdsWithParentByDomainId(filterValue.toString()).toArray(); + } + return filterValue; + }, (existing, replacement) -> replacement )) ); diff --git a/backend/src/main/java/ru/micord/ervu/account_applications/component/service/RecruitmentGridService.java b/backend/src/main/java/ru/micord/ervu/account_applications/component/service/RecruitmentGridService.java index 9732d874..321ab4f2 100644 --- a/backend/src/main/java/ru/micord/ervu/account_applications/component/service/RecruitmentGridService.java +++ b/backend/src/main/java/ru/micord/ervu/account_applications/component/service/RecruitmentGridService.java @@ -39,8 +39,8 @@ public class RecruitmentGridService extends GridV2ServiceImpl { @LocalGraphSource(sourceFieldName = "loadDao") @NotNull public EntityColumn recruitmentColumn; - @Value("${ervu.role.admin:security_administrator}") - private String ervuAdminRole; + @Value("${ervu.security.role:security_administrator}") + private String ervuSecurityRole; public RecruitmentGridService(RecruitmentDao recruitmentDao, SecurityContext securityContext) { this.recruitmentDao = recruitmentDao; @@ -54,8 +54,8 @@ public class RecruitmentGridService extends GridV2ServiceImpl { List recruitmentIds; List updatedFilters = new ArrayList<>(Arrays.asList(filters)); Optional recruitmentFilterOpt = findRecruitmentFilter(updatedFilters); - if (ervuAdminRole != null && roles.stream().anyMatch(role -> role.getAuthority().equals( - ervuAdminRole))) { + if (ervuSecurityRole != null && roles.stream().anyMatch(role -> role.getAuthority().equals( + ervuSecurityRole))) { recruitmentIds = recruitmentFilterOpt.map( filter -> getChildRecruitmentIds(updatedFilters, filter)) .orElseGet(this::getAllRecruitmentIds); diff --git a/backend/src/main/java/ru/micord/ervu/account_applications/component/service/TreeItemService.java b/backend/src/main/java/ru/micord/ervu/account_applications/component/service/TreeItemService.java index 982f6ca3..bb7ce940 100644 --- a/backend/src/main/java/ru/micord/ervu/account_applications/component/service/TreeItemService.java +++ b/backend/src/main/java/ru/micord/ervu/account_applications/component/service/TreeItemService.java @@ -47,8 +47,8 @@ public class TreeItemService { public EntityColumn businessIdColumn; @GraphSource(value = TreeItemRpcService.class, scanMode = GraphSource.ScanMode.SELF) public EntityColumn domainIdColumn; - @Value("${ervu.role.admin:security_administrator}") - private String ervuAdminRole; + @Value("${ervu.security.role:security_administrator}") + private String ervuSecurityRole; public TreeItemService(SecurityContext securityContext) { this.securityContext = securityContext; @@ -59,8 +59,8 @@ public class TreeItemService { UserSession userSession = securityContext.getUserSession(); Set roles = userSession.roles(); List filteredTreeItems = loadTreeItems(); - if (ervuAdminRole == null || roles.stream().noneMatch(role -> role.getAuthority().equals( - ervuAdminRole))) { + if (ervuSecurityRole == null || roles.stream().noneMatch(role -> role.getAuthority().equals( + ervuSecurityRole))) { filteredTreeItems = filteredTreeItems.stream() .filter(item -> item.domainId.equalsIgnoreCase(domainId)) .toList();