From f567a9ced4ba4642c07d85886e319e7d6375feed Mon Sep 17 00:00:00 2001 From: Benaissa BENARBIA Date: Thu, 20 Apr 2023 09:32:49 +0200 Subject: [PATCH] [VAS]Bug/10897: update access contract usage on archive search and collect (#1306) --- .../common/RulesUpdateCommonService.java | 4 + .../search/common/dto/ArchiveUnitsDto.java | 1 + .../common/RulesUpdateCommonServiceTest.java | 5 +- .../ArchiveSearchExternalRestClient.java | 44 ++-- .../ArchiveSearchExternalRestClientTest.java | 19 +- .../server/config/ApiArchiveServerConfig.java | 2 - .../client/ArchiveInternalRestClient.java | 43 +-- .../client/ArchiveInternalRestClientTest.java | 17 +- .../ArchiveSearchInternalServerConfig.java | 6 + .../rest/ArchiveSearchInternalController.java | 248 ++++++------------ .../converter/RuleOperationsConverter.java | 41 +-- .../SearchCriteriaHistoryConverter.java | 3 - ...chiveSearchEliminationInternalService.java | 1 - .../service/ArchiveSearchInternalService.java | 6 +- .../ArchiveSearchMgtRulesInternalService.java | 4 +- .../service/ExternalParametersService.java | 89 +++++++ ...ransferVitamOperationsInternalService.java | 9 +- ...eSearchEliminationInternalServiceTest.java | 2 +- .../ArchiveSearchInternalServiceTest.java | 6 +- ...hiveSearchMgtRulesInternalServiceTest.java | 10 +- .../ExternalParametersServiceTest.java | 134 ++++++++++ ...ferVitamOperationsInternalServiceTest.java | 6 +- .../client/CollectExternalRestClient.java | 5 +- .../CollectTransactionExternalRestClient.java | 6 +- .../CollectTransactionInternalRestClient.java | 6 +- .../ApiCollectInternalServerConfig.java | 9 +- .../rest/ProjectInternalController.java | 52 ++-- .../ProjectObjectGroupInternalController.java | 44 ++-- ...archCriteriaHistoryInternalController.java | 11 +- ...nsactionArchiveUnitInternalController.java | 67 ++--- .../rest/TransactionInternalController.java | 47 ++-- .../service/ExternalParametersService.java | 90 +++++++ .../service/ProjectInternalService.java | 18 +- .../service/TransactionInternalService.java | 2 +- .../ExternalParametersServiceTest.java | 134 ++++++++++ .../service/ProjectInternalServiceTest.java | 40 +-- .../TransactionInternalServiceTest.java | 2 +- ...chiveUnitsMetadataInternalServiceTest.java | 12 +- api/api-ingest/ingest-internal/pom.xml | 5 - .../config/ApiIngestInternalServerConfig.java | 6 - .../IngestExternalParametersService.java | 20 +- .../PastisTransformationRestClient.java | 30 +-- ...ssionRegisterDetailExternalRestClient.java | 6 +- ...ssionRegisterDetailInternalRestClient.java | 2 +- .../commons/api/dtos/SearchCriteriaDto.java | 3 +- .../BasePaginatingAndSortingRestClient.java | 25 +- .../archive-unit-information-tab.component.ts | 26 +- ...unit-objects-details-tab.component.spec.ts | 4 +- ...hive-unit-objects-details-tab.component.ts | 1 - ...rchive-unit-rules-details-tab.component.ts | 2 +- .../dip-request-create.component.ts | 2 +- .../add-management-rules.component.ts | 8 +- .../delete-unit-rules.component.ts | 4 +- .../unlock-category-inheritance.component.ts | 4 +- .../unlock-rules-inheritance.component.ts | 4 +- .../update-unit-rules.component.ts | 4 +- .../management-rules.component.ts | 4 +- .../reclassification.component.ts | 16 +- .../transfer-request-modal.component.ts | 2 +- .../archive-search.component.ts | 24 +- .../transfer-acknowledgment.component.ts | 2 +- .../src/app/archive/archive.service.ts | 71 +++-- .../archive-unit-elimination.service.ts | 17 +- .../compute-inherited-rules.service.ts | 7 +- .../update-unit-management-rule.service.ts | 14 +- .../filing-holding-scheme.component.ts | 4 +- .../leaves-tree/leaves-tree.component.ts | 4 +- .../archive-unit-validator.service.ts | 8 +- .../src/app/core/api/archive-api.service.ts | 4 +- 69 files changed, 925 insertions(+), 653 deletions(-) create mode 100644 api/api-archive-search/archive-search-internal/src/main/java/fr/gouv/vitamui/archive/internal/server/service/ExternalParametersService.java create mode 100644 api/api-archive-search/archive-search-internal/src/test/java/fr/gouv/vitamui/archive/internal/server/service/ExternalParametersServiceTest.java create mode 100644 api/api-collect/collect-internal/src/main/java/fr/gouv/vitamui/collect/internal/server/service/ExternalParametersService.java create mode 100644 api/api-collect/collect-internal/src/test/java/fr/gouv/vitamui/collect/internal/server/service/ExternalParametersServiceTest.java diff --git a/api/api-archive-search/archive-search-commons/src/main/java/fr/gouv/vitamui/archives/search/common/common/RulesUpdateCommonService.java b/api/api-archive-search/archive-search-commons/src/main/java/fr/gouv/vitamui/archives/search/common/common/RulesUpdateCommonService.java index 2bd0b684892..0a25c15523e 100644 --- a/api/api-archive-search/archive-search-commons/src/main/java/fr/gouv/vitamui/archives/search/common/common/RulesUpdateCommonService.java +++ b/api/api-archive-search/archive-search-commons/src/main/java/fr/gouv/vitamui/archives/search/common/common/RulesUpdateCommonService.java @@ -55,6 +55,10 @@ */ public final class RulesUpdateCommonService { + private RulesUpdateCommonService() { + + } + public static void deleteAttributesFromObjectNode(ObjectNode dslRequest, String... attributes) { if (dslRequest != null && attributes.length > 0) { Arrays.stream(attributes).forEach(dslRequest::remove); diff --git a/api/api-archive-search/archive-search-commons/src/main/java/fr/gouv/vitamui/archives/search/common/dto/ArchiveUnitsDto.java b/api/api-archive-search/archive-search-commons/src/main/java/fr/gouv/vitamui/archives/search/common/dto/ArchiveUnitsDto.java index 02c90ee78e3..3f6464919c9 100644 --- a/api/api-archive-search/archive-search-commons/src/main/java/fr/gouv/vitamui/archives/search/common/dto/ArchiveUnitsDto.java +++ b/api/api-archive-search/archive-search-commons/src/main/java/fr/gouv/vitamui/archives/search/common/dto/ArchiveUnitsDto.java @@ -44,5 +44,6 @@ @NoArgsConstructor @ToString public class ArchiveUnitsDto extends IdDto implements Serializable { + private static final long serialVersionUID = 19051220419502517L; private VitamUIArchiveUnitResponseDto archives; } diff --git a/api/api-archive-search/archive-search-commons/src/test/java/fr/gouv/vitamui/archives/search/common/RulesUpdateCommonServiceTest.java b/api/api-archive-search/archive-search-commons/src/test/java/fr/gouv/vitamui/archives/search/common/RulesUpdateCommonServiceTest.java index 83c155930d7..1959b83ce36 100644 --- a/api/api-archive-search/archive-search-commons/src/test/java/fr/gouv/vitamui/archives/search/common/RulesUpdateCommonServiceTest.java +++ b/api/api-archive-search/archive-search-commons/src/test/java/fr/gouv/vitamui/archives/search/common/RulesUpdateCommonServiceTest.java @@ -51,14 +51,13 @@ public class RulesUpdateCommonServiceTest { "data/expected_search_UA_query_without_filter_and_projection.json"; public final String EXPECTED_SEARCH_UA_QUERY_WITHOUT_FILTER = "data/expected_search_UA_query_without_filter.json"; - private final RulesUpdateCommonService rulesUpdateCommonService = new RulesUpdateCommonService(); @Test void search_query_without_filter_field() throws FileNotFoundException, InvalidParseOperationException { JsonNode search_query_json = JsonHandler.getFromFile(PropertiesUtils.findFile(SEARCH_UA_QUERY)); JsonNode expected_search_query_json = JsonHandler.getFromFile(PropertiesUtils .findFile(EXPECTED_SEARCH_UA_QUERY_WITHOUT_FILTER)); - rulesUpdateCommonService.deleteAttributesFromObjectNode((ObjectNode) search_query_json, "$filter"); + RulesUpdateCommonService.deleteAttributesFromObjectNode((ObjectNode) search_query_json, "$filter"); assertThat(search_query_json).isEqualTo(expected_search_query_json); } @@ -68,7 +67,7 @@ void search_query_without_filter_and_projection_fields() JsonNode search_query_json = JsonHandler.getFromFile(PropertiesUtils.findFile(SEARCH_UA_QUERY)); JsonNode expected_search_query_json = JsonHandler.getFromFile(PropertiesUtils .findFile(EXPECTED_SEARCH_UA_QUERY_WITHOUT_FILTER_AND_PROJECTION)); - rulesUpdateCommonService.deleteAttributesFromObjectNode((ObjectNode) search_query_json, "$filter", + RulesUpdateCommonService.deleteAttributesFromObjectNode((ObjectNode) search_query_json, "$filter", "$projection"); assertThat(search_query_json).isEqualTo(expected_search_query_json); } diff --git a/api/api-archive-search/archive-search-external-client/src/main/java/fr/gouv/vitamui/archives/search/external/client/ArchiveSearchExternalRestClient.java b/api/api-archive-search/archive-search-external-client/src/main/java/fr/gouv/vitamui/archives/search/external/client/ArchiveSearchExternalRestClient.java index 8f1a0ede826..7b788e63dd3 100644 --- a/api/api-archive-search/archive-search-external-client/src/main/java/fr/gouv/vitamui/archives/search/external/client/ArchiveSearchExternalRestClient.java +++ b/api/api-archive-search/archive-search-external-client/src/main/java/fr/gouv/vitamui/archives/search/external/client/ArchiveSearchExternalRestClient.java @@ -30,7 +30,6 @@ import com.fasterxml.jackson.databind.JsonNode; import fr.gouv.vitamui.archives.search.common.dto.ArchiveUnitsDto; import fr.gouv.vitamui.archives.search.common.dto.ExportDipCriteriaDto; -import fr.gouv.vitamui.commons.api.dtos.OntologyDto; import fr.gouv.vitamui.archives.search.common.dto.ReclassificationCriteriaDto; import fr.gouv.vitamui.archives.search.common.dto.RuleSearchCriteriaDto; import fr.gouv.vitamui.archives.search.common.dto.TransferRequestDto; @@ -38,6 +37,7 @@ import fr.gouv.vitamui.archives.search.common.rest.RestApi; import fr.gouv.vitamui.commons.api.CommonConstants; import fr.gouv.vitamui.commons.api.domain.PaginatedValuesDto; +import fr.gouv.vitamui.commons.api.dtos.OntologyDto; import fr.gouv.vitamui.commons.api.dtos.SearchCriteriaDto; import fr.gouv.vitamui.commons.api.logger.VitamUILogger; import fr.gouv.vitamui.commons.api.logger.VitamUILoggerFactory; @@ -55,7 +55,6 @@ import org.springframework.web.util.UriComponentsBuilder; import java.util.ArrayList; -import java.util.Collections; import java.util.List; @@ -93,7 +92,7 @@ public String getPathUrl() { public ArchiveUnitsDto searchArchiveUnitsByCriteria(ExternalHttpContext context, SearchCriteriaDto query) { LOGGER.debug("Calling search archives units by criteria"); - MultiValueMap headers = buildSearchHeaders(context); + MultiValueMap headers = buildHeaders(context); final HttpEntity request = new HttpEntity<>(query, headers); final ResponseEntity response = @@ -105,7 +104,7 @@ public ArchiveUnitsDto searchArchiveUnitsByCriteria(ExternalHttpContext context, public VitamUISearchResponseDto getFilingHoldingScheme(ExternalHttpContext context) { LOGGER.debug("Calling get filing holding scheme"); - MultiValueMap headers = buildSearchHeaders(context); + MultiValueMap headers = buildHeaders(context); final HttpEntity request = new HttpEntity<>(headers); final ResponseEntity response = restTemplate @@ -115,20 +114,6 @@ public VitamUISearchResponseDto getFilingHoldingScheme(ExternalHttpContext conte return response.getBody(); } - protected MultiValueMap buildSearchHeaders(final ExternalHttpContext context) { - final MultiValueMap headers = buildHeaders(context); - String accessContract = null; - if (context instanceof ExternalHttpContext) { - final ExternalHttpContext externalCallContext = context; - accessContract = externalCallContext.getAccessContract(); - } - - if (accessContract != null) { - headers.put(CommonConstants.X_ACCESS_CONTRACT_ID_HEADER, Collections.singletonList(accessContract)); - } - return headers; - } - public ResponseEntity findUnitById(String id, ExternalHttpContext context) { final UriComponentsBuilder uriBuilder = UriComponentsBuilder.fromHttpUrl(getUrl() + RestApi.ARCHIVE_UNIT_INFO + CommonConstants.PATH_ID); @@ -147,7 +132,7 @@ public ResponseEntity findObjectById(String id, ExternalHttpContext public ResponseEntity exportCsvArchiveUnitsByCriteria(SearchCriteriaDto query, ExternalHttpContext context) { LOGGER.debug("Calling export to csv search archives units by criteria"); - MultiValueMap headers = buildSearchHeaders(context); + MultiValueMap headers = buildHeaders(context); final HttpEntity request = new HttpEntity<>(query, headers); return restTemplate.exchange(getUrl() + RestApi.EXPORT_CSV_SEARCH_PATH, HttpMethod.POST, @@ -157,7 +142,7 @@ public ResponseEntity exportCsvArchiveUnitsByCriteria(SearchCriteriaDt public ResponseEntity exportDIPCriteria(ExportDipCriteriaDto exportDipCriteriaDto, ExternalHttpContext context) { LOGGER.debug("Calling export DIP by criteria"); - MultiValueMap headers = buildSearchHeaders(context); + MultiValueMap headers = buildHeaders(context); final HttpEntity request = new HttpEntity<>(exportDipCriteriaDto, headers); return restTemplate.exchange(getUrl() + RestApi.EXPORT_DIP, HttpMethod.POST, request, String.class); @@ -166,14 +151,14 @@ public ResponseEntity exportDIPCriteria(ExportDipCriteriaDto exportDipCr public ResponseEntity transferRequest(TransferRequestDto transferRequestDto, ExternalHttpContext context) { LOGGER.debug("Calling transfer request"); - MultiValueMap headers = buildSearchHeaders(context); + MultiValueMap headers = buildHeaders(context); final HttpEntity request = new HttpEntity<>(transferRequestDto, headers); return restTemplate.exchange(getUrl() + RestApi.TRANSFER_REQUEST, HttpMethod.POST, request, String.class); } public ResponseEntity startEliminationAnalysis(ExternalHttpContext context, SearchCriteriaDto query) { LOGGER.debug("Calling elimination analysis by criteria"); - MultiValueMap headers = buildSearchHeaders(context); + MultiValueMap headers = buildHeaders(context); final HttpEntity request = new HttpEntity<>(query, headers); return restTemplate.exchange(getUrl() + RestApi.ELIMINATION_ANALYSIS, HttpMethod.POST, request, JsonNode.class); @@ -181,7 +166,7 @@ public ResponseEntity startEliminationAnalysis(ExternalHttpContext con public ResponseEntity startEliminationAction(ExternalHttpContext context, SearchCriteriaDto query) { LOGGER.debug("Calling elimination action by using criteria {}", query); - MultiValueMap headers = buildSearchHeaders(context); + MultiValueMap headers = buildHeaders(context); final HttpEntity request = new HttpEntity<>(query, headers); return restTemplate.exchange(getUrl() + RestApi.ELIMINATION_ACTION, HttpMethod.POST, request, JsonNode.class); @@ -190,7 +175,7 @@ public ResponseEntity startEliminationAction(ExternalHttpContext conte public ResponseEntity updateArchiveUnitsRules(RuleSearchCriteriaDto ruleSearchCriteriaDto, ExternalHttpContext context) { LOGGER.debug("Calling updateArchiveUnitsRules by criteria"); - MultiValueMap headers = buildSearchHeaders(context); + MultiValueMap headers = buildHeaders(context); final HttpEntity request = new HttpEntity<>(ruleSearchCriteriaDto, headers); return restTemplate.exchange(getUrl() + RestApi.MASS_UPDATE_UNITS_RULES, HttpMethod.POST, request, String.class); @@ -199,7 +184,7 @@ public ResponseEntity updateArchiveUnitsRules(RuleSearchCriteriaDto rule public ResponseEntity computedInheritedRules(SearchCriteriaDto searchCriteriaDto, ExternalHttpContext context) { LOGGER.debug("Calling computed inherited rules by criteria"); - MultiValueMap headers = buildSearchHeaders(context); + MultiValueMap headers = buildHeaders(context); final HttpEntity request = new HttpEntity<>(searchCriteriaDto, headers); return restTemplate.exchange(getUrl() + RestApi.COMPUTED_INHERITED_RULES, HttpMethod.POST, request, String.class); @@ -209,7 +194,7 @@ public ResponseEntity computedInheritedRules(SearchCriteriaDto searchCri public ResponseEntity selectUnitWithInheritedRules(ExternalHttpContext context, SearchCriteriaDto query) { LOGGER.debug("Calling select Unit With Inherited Rules by criteria"); - MultiValueMap headers = buildSearchHeaders(context); + MultiValueMap headers = buildHeaders(context); final HttpEntity request = new HttpEntity<>(query, headers); final ResponseEntity response = @@ -222,7 +207,7 @@ public ResponseEntity selectUnitWithInheritedRules(ExternalHttpConte public ResponseEntity reclassification(final ReclassificationCriteriaDto reclassificationCriteriaDto, final ExternalHttpContext context) { LOGGER.debug("Calling reclassification with query {} ", reclassificationCriteriaDto); - MultiValueMap headers = buildSearchHeaders(context); + MultiValueMap headers = buildHeaders(context); final HttpEntity request = new HttpEntity<>(reclassificationCriteriaDto, headers); final ResponseEntity response = restTemplate.exchange(getUrl() + RestApi.RECLASSIFICATION, HttpMethod.POST, @@ -239,8 +224,9 @@ public ResponseEntity updateUnitById(String id, UnitDescriptiveMetadataD return restTemplate.exchange(uriBuilder.build(id), HttpMethod.PUT, request, String.class); } - public List getExternalOntologiesList(ExternalHttpContext context) { - final UriComponentsBuilder uriBuilder = UriComponentsBuilder.fromHttpUrl(getUrl() + CommonConstants.EXTERNAL_ONTOLOGIES_LIST); + public List getExternalOntologiesList(ExternalHttpContext context) { + final UriComponentsBuilder uriBuilder = + UriComponentsBuilder.fromHttpUrl(getUrl() + CommonConstants.EXTERNAL_ONTOLOGIES_LIST); final HttpEntity request = new HttpEntity<>(buildHeaders(context)); return restTemplate.exchange(uriBuilder.build().toUri(), HttpMethod.GET, request, ArrayList.class).getBody(); } diff --git a/api/api-archive-search/archive-search-external-client/src/test/java/fr/gouv/vitamui/archives/search/external/client/ArchiveSearchExternalRestClientTest.java b/api/api-archive-search/archive-search-external-client/src/test/java/fr/gouv/vitamui/archives/search/external/client/ArchiveSearchExternalRestClientTest.java index 0fba18eb622..d672e483ba9 100644 --- a/api/api-archive-search/archive-search-external-client/src/test/java/fr/gouv/vitamui/archives/search/external/client/ArchiveSearchExternalRestClientTest.java +++ b/api/api-archive-search/archive-search-external-client/src/test/java/fr/gouv/vitamui/archives/search/external/client/ArchiveSearchExternalRestClientTest.java @@ -47,7 +47,6 @@ import org.springframework.http.HttpMethod; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; -import org.springframework.util.MultiValueMap; import org.springframework.web.client.RestTemplate; import java.io.IOException; @@ -89,12 +88,10 @@ public void sampleArchiveTest() { public void when_searchArchiveUnitsByCriteria_rest_template_ok_should_return_ok() { ExternalHttpContext context = new ExternalHttpContext(9, "", "", ""); SearchCriteriaDto query = new SearchCriteriaDto(); - MultiValueMap headers = archiveSearchExternalRestClient.buildSearchHeaders(context); - final HttpEntity request = new HttpEntity<>(query, headers); final ArchiveUnitsDto responseEntity = new ArchiveUnitsDto(); when(restTemplate - .exchange(anyString(), eq(HttpMethod.POST), eq(request), eq(ArchiveUnitsDto.class))) + .exchange(anyString(), eq(HttpMethod.POST), any(HttpEntity.class), eq(ArchiveUnitsDto.class))) .thenReturn(new ResponseEntity<>(responseEntity, HttpStatus.OK)); ArchiveUnitsDto response = @@ -106,12 +103,10 @@ public void when_searchArchiveUnitsByCriteria_rest_template_ok_should_return_ok( @Test public void whenGetFilingHoldingSChemeRestTemplateOKThenShouldReturnOK() { ExternalHttpContext context = new ExternalHttpContext(9, "", "", ""); - MultiValueMap headers = archiveSearchExternalRestClient.buildSearchHeaders(context); - final HttpEntity request = new HttpEntity<>(headers); final VitamUISearchResponseDto responseEntity = new VitamUISearchResponseDto(); when(restTemplate - .exchange(anyString(), eq(HttpMethod.GET), eq(request), eq(VitamUISearchResponseDto.class))) + .exchange(anyString(), eq(HttpMethod.GET), any(HttpEntity.class), eq(VitamUISearchResponseDto.class))) .thenReturn(new ResponseEntity<>(responseEntity, HttpStatus.OK)); VitamUISearchResponseDto response = @@ -124,16 +119,15 @@ public void whenGetFilingHoldingSChemeRestTemplateOKThenShouldReturnOK() { @Test public void whenGetexportCsvArchiveUnitsByCriteria_Srvc_ok_ThenShouldReturnOK() throws IOException { ExternalHttpContext context = new ExternalHttpContext(9, "", "", ""); - MultiValueMap headers = archiveSearchExternalRestClient.buildSearchHeaders(context); SearchCriteriaDto query = new SearchCriteriaDto(); - final HttpEntity request = new HttpEntity<>(query, headers); + final HttpEntity request = new HttpEntity<>(query); Resource resource = new ByteArrayResource( Objects.requireNonNull(ArchiveSearchExternalRestClientTest.class.getClassLoader() .getResourceAsStream(ARCHIVE_UNITS_RESULTS_CSV)).readAllBytes()); when(restTemplate.exchange(anyString(), eq(HttpMethod.POST), - eq(request), eq(Resource.class))).thenReturn(new ResponseEntity<>(resource, HttpStatus.OK)); + any(HttpEntity.class), eq(Resource.class))).thenReturn(new ResponseEntity<>(resource, HttpStatus.OK)); ResponseEntity response = archiveSearchExternalRestClient.exportCsvArchiveUnitsByCriteria(query, context); @@ -144,10 +138,9 @@ public void whenGetexportCsvArchiveUnitsByCriteria_Srvc_ok_ThenShouldReturnOK() @Test public void transferRequest_should_return_OK() { ExternalHttpContext context = new ExternalHttpContext(9, "", "", ""); - MultiValueMap headers = archiveSearchExternalRestClient.buildSearchHeaders(context); TransferRequestDto transferRequestDto = new TransferRequestDto(); - final HttpEntity request = new HttpEntity<>(transferRequestDto, headers); - when(restTemplate.exchange(anyString(), eq(HttpMethod.POST), eq(request), any(Class.class))) + final HttpEntity request = new HttpEntity<>(transferRequestDto); + when(restTemplate.exchange(anyString(), eq(HttpMethod.POST), any(HttpEntity.class), any(Class.class))) .thenReturn(new ResponseEntity<>("OK", HttpStatus.OK)); // When ResponseEntity response = archiveSearchExternalRestClient.transferRequest(transferRequestDto, context); diff --git a/api/api-archive-search/archive-search-external/src/main/java/fr/gouv/vitamui/archives/search/external/server/config/ApiArchiveServerConfig.java b/api/api-archive-search/archive-search-external/src/main/java/fr/gouv/vitamui/archives/search/external/server/config/ApiArchiveServerConfig.java index 20d7703d403..0973d0f3a55 100644 --- a/api/api-archive-search/archive-search-external/src/main/java/fr/gouv/vitamui/archives/search/external/server/config/ApiArchiveServerConfig.java +++ b/api/api-archive-search/archive-search-external/src/main/java/fr/gouv/vitamui/archives/search/external/server/config/ApiArchiveServerConfig.java @@ -44,12 +44,10 @@ import fr.gouv.vitamui.iam.security.service.ExternalSecurityService; import fr.gouv.vitamui.security.client.ContextRestClient; import fr.gouv.vitamui.security.client.SecurityRestClientFactory; -import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration; import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.DependsOn; import org.springframework.context.annotation.Import; @Configuration diff --git a/api/api-archive-search/archive-search-internal-client/src/main/java/fr/gouv/archive/internal/client/ArchiveInternalRestClient.java b/api/api-archive-search/archive-search-internal-client/src/main/java/fr/gouv/archive/internal/client/ArchiveInternalRestClient.java index 7336e00f601..2144ef45da0 100644 --- a/api/api-archive-search/archive-search-internal-client/src/main/java/fr/gouv/archive/internal/client/ArchiveInternalRestClient.java +++ b/api/api-archive-search/archive-search-internal-client/src/main/java/fr/gouv/archive/internal/client/ArchiveInternalRestClient.java @@ -29,7 +29,6 @@ import com.fasterxml.jackson.databind.JsonNode; import fr.gouv.vitamui.archives.search.common.dto.ArchiveUnitsDto; import fr.gouv.vitamui.archives.search.common.dto.ExportDipCriteriaDto; -import fr.gouv.vitamui.commons.api.dtos.OntologyDto; import fr.gouv.vitamui.archives.search.common.dto.ReclassificationCriteriaDto; import fr.gouv.vitamui.archives.search.common.dto.RuleSearchCriteriaDto; import fr.gouv.vitamui.archives.search.common.dto.TransferRequestDto; @@ -37,6 +36,7 @@ import fr.gouv.vitamui.archives.search.common.rest.RestApi; import fr.gouv.vitamui.commons.api.CommonConstants; import fr.gouv.vitamui.commons.api.domain.PaginatedValuesDto; +import fr.gouv.vitamui.commons.api.dtos.OntologyDto; import fr.gouv.vitamui.commons.api.dtos.SearchCriteriaDto; import fr.gouv.vitamui.commons.api.logger.VitamUILogger; import fr.gouv.vitamui.commons.api.logger.VitamUILoggerFactory; @@ -54,7 +54,6 @@ import org.springframework.web.util.UriComponentsBuilder; import java.util.ArrayList; -import java.util.Collections; import java.util.List; public class ArchiveInternalRestClient @@ -95,7 +94,7 @@ public String getPathUrl() { public ArchiveUnitsDto searchArchiveUnitsByCriteria(InternalHttpContext context, SearchCriteriaDto query) { LOGGER.debug("Calling searchArchiveUnitsByCriteria with query {} ", query); - MultiValueMap headers = buildSearchHeaders(context); + MultiValueMap headers = buildHeaders(context); final HttpEntity request = new HttpEntity<>(query, headers); final ResponseEntity response = restTemplate.exchange(getUrl() + RestApi.SEARCH_PATH, HttpMethod.POST, @@ -107,7 +106,7 @@ public ArchiveUnitsDto searchArchiveUnitsByCriteria(InternalHttpContext context, public VitamUISearchResponseDto getFilingHoldingScheme(InternalHttpContext context) { LOGGER.debug("Calling get filing holding scheme"); - MultiValueMap headers = buildSearchHeaders(context); + MultiValueMap headers = buildHeaders(context); final HttpEntity request = new HttpEntity<>(headers); final ResponseEntity response = restTemplate @@ -117,21 +116,6 @@ public VitamUISearchResponseDto getFilingHoldingScheme(InternalHttpContext conte return response.getBody(); } - protected MultiValueMap buildSearchHeaders(final InternalHttpContext context) { - final MultiValueMap headers = buildHeaders(context); - String accessContract = null; - if (context instanceof InternalHttpContext) { - final InternalHttpContext externalCallContext = context; - accessContract = externalCallContext.getAccessContract(); - } - - if (accessContract != null) { - headers.put(CommonConstants.X_ACCESS_CONTRACT_ID_HEADER, Collections.singletonList(accessContract)); - } - return headers; - } - - public ResponseEntity findUnitById(String id, final InternalHttpContext context) { final UriComponentsBuilder uriBuilder = UriComponentsBuilder.fromHttpUrl(getUrl() + RestApi.ARCHIVE_UNIT_INFO + CommonConstants.PATH_ID); @@ -149,7 +133,7 @@ public ResponseEntity findObjectById(String id, final InternalHttpCo public Resource exportCsvArchiveUnitsByCriteria(final SearchCriteriaDto query, final InternalHttpContext context) { LOGGER.debug("Calling exportCsvArchiveUnitsByCriteria with query {} ", query); - MultiValueMap headers = buildSearchHeaders(context); + MultiValueMap headers = buildHeaders(context); final HttpEntity request = new HttpEntity<>(query, headers); final ResponseEntity response = restTemplate.exchange(getUrl() + RestApi.EXPORT_CSV_SEARCH_PATH, HttpMethod.POST, @@ -162,7 +146,7 @@ public Resource exportCsvArchiveUnitsByCriteria(final SearchCriteriaDto query, public String exportDIPByCriteria(final ExportDipCriteriaDto exportDipCriteriaDto, final InternalHttpContext context) { LOGGER.debug("Calling exportDIPByCriteria with query {} ", exportDipCriteriaDto); - MultiValueMap headers = buildSearchHeaders(context); + MultiValueMap headers = buildHeaders(context); final HttpEntity request = new HttpEntity<>(exportDipCriteriaDto, headers); final ResponseEntity response = restTemplate.exchange(getUrl() + RestApi.EXPORT_DIP, HttpMethod.POST, request, String.class); @@ -173,7 +157,7 @@ public String exportDIPByCriteria(final ExportDipCriteriaDto exportDipCriteriaDt public String transferRequest(final TransferRequestDto transferRequestDto, final InternalHttpContext context) { LOGGER.debug("Calling transfer request with query {} ", transferRequestDto); - MultiValueMap headers = buildSearchHeaders(context); + MultiValueMap headers = buildHeaders(context); final HttpEntity request = new HttpEntity<>(transferRequestDto, headers); final ResponseEntity response = restTemplate.exchange(getUrl() + RestApi.TRANSFER_REQUEST, HttpMethod.POST, request, String.class); @@ -184,7 +168,7 @@ public String transferRequest(final TransferRequestDto transferRequestDto, public ResponseEntity startEliminationAnalysis(final InternalHttpContext context, final SearchCriteriaDto query) { LOGGER.debug("Calling elimination analysis with query {} ", query); - MultiValueMap headers = buildSearchHeaders(context); + MultiValueMap headers = buildHeaders(context); final HttpEntity request = new HttpEntity<>(query, headers); final ResponseEntity response = restTemplate.exchange(getUrl() + RestApi.ELIMINATION_ANALYSIS, HttpMethod.POST, @@ -197,7 +181,7 @@ public ResponseEntity startEliminationAnalysis(final InternalHttpConte public ResponseEntity startEliminationAction(final InternalHttpContext context, final SearchCriteriaDto query) { LOGGER.debug("Calling elimination action with query {} ", query); - MultiValueMap headers = buildSearchHeaders(context); + MultiValueMap headers = buildHeaders(context); final HttpEntity request = new HttpEntity<>(query, headers); final ResponseEntity response = restTemplate.exchange(getUrl() + RestApi.ELIMINATION_ACTION, HttpMethod.POST, @@ -210,7 +194,7 @@ public ResponseEntity startEliminationAction(final InternalHttpContext public String updateArchiveUnitsRules(final RuleSearchCriteriaDto ruleSearchCriteriaDto, final InternalHttpContext context) { LOGGER.debug("Calling Update Archive Units Rules with query {} ", ruleSearchCriteriaDto); - MultiValueMap headers = buildSearchHeaders(context); + MultiValueMap headers = buildHeaders(context); final HttpEntity request = new HttpEntity<>(ruleSearchCriteriaDto, headers); final ResponseEntity response = restTemplate.exchange(getUrl() + RestApi.MASS_UPDATE_UNITS_RULES, HttpMethod.POST, @@ -223,7 +207,7 @@ public String updateArchiveUnitsRules(final RuleSearchCriteriaDto ruleSearchCrit public String computedInheritedRules(final SearchCriteriaDto searchCriteriaDto, final InternalHttpContext context) { LOGGER.debug("Calling computedInheritedRules with query {} ", searchCriteriaDto); - MultiValueMap headers = buildSearchHeaders(context); + MultiValueMap headers = buildHeaders(context); final HttpEntity request = new HttpEntity<>(searchCriteriaDto, headers); final ResponseEntity response = restTemplate.exchange(getUrl() + RestApi.COMPUTED_INHERITED_RULES, HttpMethod.POST, @@ -236,7 +220,7 @@ public String computedInheritedRules(final SearchCriteriaDto searchCriteriaDto, public ResultsDto selectUnitWithInheritedRules(InternalHttpContext context, SearchCriteriaDto query) { LOGGER.debug("Calling select Unit With Inherited Rules with query {} ", query); - MultiValueMap headers = buildSearchHeaders(context); + MultiValueMap headers = buildHeaders(context); final HttpEntity request = new HttpEntity<>(query, headers); final ResponseEntity response = restTemplate.exchange(getUrl() + RestApi.UNIT_WITH_INHERITED_RULES, HttpMethod.POST, @@ -248,7 +232,7 @@ public ResultsDto selectUnitWithInheritedRules(InternalHttpContext context, Sear public String reclassification(final ReclassificationCriteriaDto reclassificationCriteriaDto, final InternalHttpContext context) { LOGGER.debug("Calling reclassification with query {} ", reclassificationCriteriaDto); - MultiValueMap headers = buildSearchHeaders(context); + MultiValueMap headers = buildHeaders(context); final HttpEntity request = new HttpEntity<>(reclassificationCriteriaDto, headers); final ResponseEntity response = restTemplate.exchange(getUrl() + RestApi.RECLASSIFICATION, HttpMethod.POST, @@ -269,7 +253,8 @@ public String updateUnitById(String id, UnitDescriptiveMetadataDto unitDescripti public List getExternalOntologiesList(final InternalHttpContext context) { LOGGER.debug("[INTERNAL] : Calling Get External ontologies list"); - final UriComponentsBuilder uriBuilder = UriComponentsBuilder.fromHttpUrl(getUrl() + CommonConstants.EXTERNAL_ONTOLOGIES_LIST); + final UriComponentsBuilder uriBuilder = + UriComponentsBuilder.fromHttpUrl(getUrl() + CommonConstants.EXTERNAL_ONTOLOGIES_LIST); final HttpEntity request = new HttpEntity<>(buildHeaders(context)); return restTemplate.exchange(uriBuilder.build().toUri(), HttpMethod.GET, request, ArrayList.class).getBody(); } diff --git a/api/api-archive-search/archive-search-internal-client/src/test/java/fr/gouv/archive/internal/client/ArchiveInternalRestClientTest.java b/api/api-archive-search/archive-search-internal-client/src/test/java/fr/gouv/archive/internal/client/ArchiveInternalRestClientTest.java index 25e155abd6c..2d24d425ffa 100644 --- a/api/api-archive-search/archive-search-internal-client/src/test/java/fr/gouv/archive/internal/client/ArchiveInternalRestClientTest.java +++ b/api/api-archive-search/archive-search-internal-client/src/test/java/fr/gouv/archive/internal/client/ArchiveInternalRestClientTest.java @@ -44,11 +44,11 @@ import org.springframework.http.HttpMethod; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; -import org.springframework.util.MultiValueMap; import org.springframework.web.client.RestTemplate; import java.io.IOException; +import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.anyString; import static org.mockito.Mockito.eq; import static org.mockito.Mockito.when; @@ -71,7 +71,7 @@ public void setUp() { @Test public void sampleArchiveTest() { Assertions.assertNotNull(archivesSearchExternalRestClient); - Assertions.assertEquals(archivesSearchExternalRestClient.getPathUrl(), RestApi.ARCHIVE_SEARCH_PATH); + Assertions.assertEquals(RestApi.ARCHIVE_SEARCH_PATH, archivesSearchExternalRestClient.getPathUrl()); } @@ -80,13 +80,12 @@ public void sampleArchiveTest() { public void when_searchArchiveUnitsByCriteria_rest_template_ok_should_return_ok() { InternalHttpContext context = new InternalHttpContext(9, "", "", "", "", "", "", ""); SearchCriteriaDto query = new SearchCriteriaDto(); - MultiValueMap headers = archivesSearchExternalRestClient.buildSearchHeaders(context); - final HttpEntity request = new HttpEntity<>(query, headers); + final ArchiveUnitsDto responseEntity = new ArchiveUnitsDto(); when(restTemplate .exchange(anyString(), - eq(HttpMethod.POST), eq(request), + eq(HttpMethod.POST), any(HttpEntity.class), eq(ArchiveUnitsDto.class))) .thenReturn(new ResponseEntity<>(responseEntity, HttpStatus.OK)); ArchiveUnitsDto response = @@ -97,12 +96,10 @@ public void when_searchArchiveUnitsByCriteria_rest_template_ok_should_return_ok( @Test public void testSearchFilingHoldingSchemeResultsThanReturnVitamUISearchResponseDto() { InternalHttpContext context = new InternalHttpContext(9, "", "", "", "", "", "", ""); - MultiValueMap headers = archivesSearchExternalRestClient.buildSearchHeaders(context); - final HttpEntity request = new HttpEntity<>(headers); final VitamUISearchResponseDto responseEntity = new VitamUISearchResponseDto(); when(restTemplate - .exchange(anyString(), eq(HttpMethod.GET), eq(request), eq(VitamUISearchResponseDto.class))) + .exchange(anyString(), eq(HttpMethod.GET), any(HttpEntity.class), eq(VitamUISearchResponseDto.class))) .thenReturn(new ResponseEntity<>(responseEntity, HttpStatus.OK)); VitamUISearchResponseDto response = archivesSearchExternalRestClient.getFilingHoldingScheme(context); @@ -112,15 +109,13 @@ public void testSearchFilingHoldingSchemeResultsThanReturnVitamUISearchResponseD @Test public void whenGetexportCsvArchiveUnitsByCriteria_Srvc_ok_ThenShouldReturnOK() throws IOException { InternalHttpContext context = new InternalHttpContext(9, "", "", "", "", "", "", ""); - MultiValueMap headers = archivesSearchExternalRestClient.buildSearchHeaders(context); SearchCriteriaDto query = new SearchCriteriaDto(); - final HttpEntity request = new HttpEntity<>(query, headers); Resource resource = new ByteArrayResource(ArchiveInternalRestClientTest.class.getClassLoader() .getResourceAsStream(ARCHIVE_UNITS_RESULTS_CSV).readAllBytes()); when(restTemplate.exchange(anyString(), eq(HttpMethod.POST), - eq(request), eq(Resource.class))).thenReturn(new ResponseEntity<>(resource, HttpStatus.OK)); + any(HttpEntity.class), eq(Resource.class))).thenReturn(new ResponseEntity<>(resource, HttpStatus.OK)); Resource response = archivesSearchExternalRestClient.exportCsvArchiveUnitsByCriteria(query, context); diff --git a/api/api-archive-search/archive-search-internal/src/main/java/fr/gouv/vitamui/archive/internal/server/config/ArchiveSearchInternalServerConfig.java b/api/api-archive-search/archive-search-internal/src/main/java/fr/gouv/vitamui/archive/internal/server/config/ArchiveSearchInternalServerConfig.java index 22b5b59b267..08183ffd615 100644 --- a/api/api-archive-search/archive-search-internal/src/main/java/fr/gouv/vitamui/archive/internal/server/config/ArchiveSearchInternalServerConfig.java +++ b/api/api-archive-search/archive-search-internal/src/main/java/fr/gouv/vitamui/archive/internal/server/config/ArchiveSearchInternalServerConfig.java @@ -43,6 +43,7 @@ import fr.gouv.vitamui.commons.vitam.api.access.UnitService; import fr.gouv.vitamui.commons.vitam.api.config.VitamAccessConfig; import fr.gouv.vitamui.commons.vitam.api.config.VitamAdministrationConfig; +import fr.gouv.vitamui.iam.internal.client.ExternalParametersInternalRestClient; import fr.gouv.vitamui.iam.internal.client.IamInternalRestClientFactory; import fr.gouv.vitamui.iam.internal.client.UserInternalRestClient; import fr.gouv.vitamui.iam.security.provider.InternalApiAuthenticationProvider; @@ -133,4 +134,9 @@ public SearchCriteriaHistoryInternalService searchCriteriaHistoryInternalService searchCriteriaHistoryConverter, internalSecurityService); } + @Bean + public ExternalParametersInternalRestClient externalParametersInternalRestClient( + final IamInternalRestClientFactory iamInternalRestClientFactory) { + return iamInternalRestClientFactory.getExternalParametersInternalRestClient(); + } } diff --git a/api/api-archive-search/archive-search-internal/src/main/java/fr/gouv/vitamui/archive/internal/server/rest/ArchiveSearchInternalController.java b/api/api-archive-search/archive-search-internal/src/main/java/fr/gouv/vitamui/archive/internal/server/rest/ArchiveSearchInternalController.java index febc30f74d8..aa97bdb3d1d 100644 --- a/api/api-archive-search/archive-search-internal/src/main/java/fr/gouv/vitamui/archive/internal/server/rest/ArchiveSearchInternalController.java +++ b/api/api-archive-search/archive-search-internal/src/main/java/fr/gouv/vitamui/archive/internal/server/rest/ArchiveSearchInternalController.java @@ -28,7 +28,6 @@ import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; -import fr.gouv.vitam.common.client.VitamContext; import fr.gouv.vitam.common.exception.InvalidParseOperationException; import fr.gouv.vitam.common.exception.VitamClientException; import fr.gouv.vitamui.archive.internal.server.service.ArchiveSearchEliminationInternalService; @@ -36,6 +35,7 @@ import fr.gouv.vitamui.archive.internal.server.service.ArchiveSearchMgtRulesInternalService; import fr.gouv.vitamui.archive.internal.server.service.ArchiveSearchUnitExportCsvInternalService; import fr.gouv.vitamui.archive.internal.server.service.ExportDipInternalService; +import fr.gouv.vitamui.archive.internal.server.service.ExternalParametersService; import fr.gouv.vitamui.archive.internal.server.service.TransferVitamOperationsInternalService; import fr.gouv.vitamui.archives.search.common.dto.ArchiveUnitsDto; import fr.gouv.vitamui.archives.search.common.dto.ExportDipCriteriaDto; @@ -95,9 +95,9 @@ public class ArchiveSearchInternalController { VitamUILoggerFactory.getInstance(ArchiveSearchInternalController.class); private static final String MANDATORY_PARAMETERS = - "The tenant Id, the accessContract Id and the SearchCriteria are mandatory parameters: "; - private static final String IDENTIFIER_ACCESS_CONTRACT_MANDATORY = - "The identifier, the accessContract Id are mandatory parameters: "; + "The tenant Id and the SearchCriteria are mandatory parameters: "; + private static final String IDENTIFIER_MANDATORY = + "The identifier are mandatory parameters: "; private final ArchiveSearchInternalService archiveInternalService; private final ArchiveSearchUnitExportCsvInternalService archiveSearchUnitExportCsvInternalService; @@ -106,6 +106,7 @@ public class ArchiveSearchInternalController { private final ArchiveSearchEliminationInternalService archiveSearchEliminationInternalService; private final ArchiveSearchMgtRulesInternalService archiveSearchMgtRulesInternalService; private final InternalSecurityService securityService; + private final ExternalParametersService externalParametersService; private final ObjectMapper objectMapper; @@ -117,7 +118,8 @@ public ArchiveSearchInternalController(final ArchiveSearchInternalService archiv final ExportDipInternalService exportDipInternalService, TransferVitamOperationsInternalService transferVitamOperationsInternalService, final ArchiveSearchMgtRulesInternalService archiveSearchMgtRulesInternalService, - final ArchiveSearchEliminationInternalService archiveSearchEliminationInternalService) { + final ArchiveSearchEliminationInternalService archiveSearchEliminationInternalService, + final ExternalParametersService externalParametersService) { this.archiveInternalService = archiveInternalService; this.securityService = securityService; this.objectMapper = objectMapper; @@ -126,83 +128,64 @@ public ArchiveSearchInternalController(final ArchiveSearchInternalService archiv this.transferVitamOperationsInternalService = transferVitamOperationsInternalService; this.archiveSearchEliminationInternalService = archiveSearchEliminationInternalService; this.archiveSearchMgtRulesInternalService = archiveSearchMgtRulesInternalService; + this.externalParametersService = externalParametersService; } @PostMapping(RestApi.SEARCH_PATH) public ArchiveUnitsDto searchArchiveUnitsByCriteria( - @RequestHeader(value = CommonConstants.X_TENANT_ID_HEADER) final Integer tenantId, - @RequestHeader(value = CommonConstants.X_ACCESS_CONTRACT_ID_HEADER) final String accessContractId, @RequestBody final SearchCriteriaDto searchQuery) throws VitamClientException, IOException, InvalidParseOperationException, PreconditionFailedException { SanityChecker.sanitizeCriteria(searchQuery); - ParameterChecker - .checkParameter(MANDATORY_PARAMETERS, - tenantId, accessContractId, searchQuery); - SanityChecker.checkSecureParameter(accessContractId); - LOGGER.debug("Calling service searchArchiveUnits for tenantId {}, accessContractId {} By Criteria {} ", - tenantId, - accessContractId, searchQuery); - final VitamContext vitamContext = securityService.buildVitamContext(tenantId, accessContractId); - return archiveInternalService.searchArchiveUnitsByCriteria(searchQuery, vitamContext); + ParameterChecker.checkParameter(MANDATORY_PARAMETERS, searchQuery); + LOGGER.debug("Calling service searchArchiveUnits By Criteria {} ", + searchQuery); + return archiveInternalService.searchArchiveUnitsByCriteria(searchQuery, + externalParametersService.buildVitamContextFromExternalParam()); } @GetMapping(RestApi.FILING_HOLDING_SCHEME_PATH) - public VitamUISearchResponseDto getFillingHoldingScheme( - @RequestHeader(value = CommonConstants.X_TENANT_ID_HEADER) final Integer tenantId, - @RequestHeader(value = CommonConstants.X_ACCESS_CONTRACT_ID_HEADER) final String accessContractId) - throws VitamClientException, IOException, InvalidParseOperationException, PreconditionFailedException { + public VitamUISearchResponseDto getFillingHoldingScheme() + throws VitamClientException, IOException, PreconditionFailedException { LOGGER.debug("Get filing plan"); - ParameterChecker.checkParameter("The tenant Id, the accessContract Id are mandatory parameters: ", tenantId, - accessContractId); - SanityChecker.checkSecureParameter(accessContractId); - final VitamContext vitamContext = securityService.buildVitamContext(tenantId, accessContractId); - return objectMapper.treeToValue(archiveInternalService.getFillingHoldingScheme(vitamContext), + return objectMapper.treeToValue(archiveInternalService.getFillingHoldingScheme( + externalParametersService.buildVitamContextFromExternalParam()), VitamUISearchResponseDto.class); } @GetMapping(RestApi.ARCHIVE_UNIT_INFO + CommonConstants.PATH_ID) - public ResultsDto findUnitById(final @PathVariable("id") String id, - @RequestHeader(value = CommonConstants.X_ACCESS_CONTRACT_ID_HEADER) final String accessContractId) + public ResultsDto findUnitById(final @PathVariable("id") String unitId) throws VitamClientException, InvalidParseOperationException, PreconditionFailedException { - ParameterChecker - .checkParameter(IDENTIFIER_ACCESS_CONTRACT_MANDATORY, id, accessContractId); - SanityChecker.checkSecureParameter(id, accessContractId); - LOGGER.debug("UA Details {}", id); - VitamContext vitamContext = - securityService.buildVitamContext(securityService.getTenantIdentifier(), accessContractId); - return archiveInternalService.findArchiveUnitById(id, vitamContext); + .checkParameter(IDENTIFIER_MANDATORY, unitId); + SanityChecker.checkSecureParameter(unitId); + LOGGER.debug("UA Details by id {}", unitId); + return archiveInternalService.findArchiveUnitById(unitId, + externalParametersService.buildVitamContextFromExternalParam()); } @GetMapping(RestApi.OBJECTGROUP + CommonConstants.PATH_ID) - public ResultsDto findObjectById(final @PathVariable("id") String id, - @RequestHeader(value = CommonConstants.X_ACCESS_CONTRACT_ID_HEADER) final String accessContractId) + public ResultsDto findObjectById(final @PathVariable("id") String objectId) throws VitamClientException, InvalidParseOperationException { ParameterChecker - .checkParameter(IDENTIFIER_ACCESS_CONTRACT_MANDATORY, id, accessContractId); - SanityChecker.checkSecureParameter(id, accessContractId); - LOGGER.debug("Get ObjectGroup By id : {}", id); - VitamContext vitamContext = - securityService.buildVitamContext(securityService.getTenantIdentifier(), accessContractId); - return archiveInternalService.findObjectById(id, vitamContext); + .checkParameter(IDENTIFIER_MANDATORY, objectId); + SanityChecker.checkSecureParameter(objectId); + LOGGER.debug("Get ObjectGroup By id : {}", objectId); + return archiveInternalService.findObjectById(objectId, + externalParametersService.buildVitamContextFromExternalParam()); } @GetMapping(value = RestApi.DOWNLOAD_ARCHIVE_UNIT + CommonConstants.PATH_ID, produces = MediaType.APPLICATION_OCTET_STREAM_VALUE) - public Mono> downloadObjectFromUnit(final @PathVariable("id") String id, - final @RequestParam("usage") String usage, final @RequestParam("version") Integer version, - @RequestHeader(value = CommonConstants.X_ACCESS_CONTRACT_ID_HEADER) final String accessContractId + public Mono> downloadObjectFromUnit(final @PathVariable("id") String objectId, + final @RequestParam("usage") String usage, final @RequestParam("version") Integer version ) throws InvalidParseOperationException, PreconditionFailedException { - ParameterChecker - .checkParameter(IDENTIFIER_ACCESS_CONTRACT_MANDATORY, id, accessContractId); - SanityChecker.checkSecureParameter(id, accessContractId, usage); - LOGGER.debug("Access Contract {} ", accessContractId); - LOGGER.debug("Download Archive Unit Object with id {}", id); - final VitamContext vitamContext = - securityService.buildVitamContext(securityService.getTenantIdentifier(), accessContractId); + .checkParameter(IDENTIFIER_MANDATORY, objectId); + SanityChecker.checkSecureParameter(objectId, usage); + LOGGER.debug("Download Archive Unit Object with id {}", objectId); return Mono.fromCallable(() -> { - Response response = archiveInternalService.downloadObjectFromUnit(id, usage, version, vitamContext); + Response response = archiveInternalService.downloadObjectFromUnit(objectId, usage, version, + externalParametersService.buildVitamContextFromExternalParam()); return new InputStreamResource((InputStream) response.getEntity()); }).subscribeOn(Schedulers.boundedElastic()) .flatMap(resource -> Mono.just(ResponseEntity @@ -212,208 +195,137 @@ public Mono> downloadObjectFromUnit(final @PathVariable @PostMapping(RestApi.EXPORT_CSV_SEARCH_PATH) public ResponseEntity exportCsvArchiveUnitsByCriteria( - @RequestHeader(value = CommonConstants.X_TENANT_ID_HEADER) final Integer tenantId, - @RequestHeader(value = CommonConstants.X_ACCESS_CONTRACT_ID_HEADER) final String accessContractId, @RequestBody final SearchCriteriaDto searchQuery) throws VitamClientException, InvalidParseOperationException, PreconditionFailedException { - SanityChecker.checkSecureParameter(accessContractId); SanityChecker.sanitizeCriteria(searchQuery); LOGGER.debug("Export to CSV file Archive Units by criteria {}", searchQuery); - final VitamContext vitamContext = securityService.buildVitamContext(tenantId, accessContractId); Resource exportedResult = archiveSearchUnitExportCsvInternalService - .exportToCsvSearchArchiveUnitsByCriteria(searchQuery, vitamContext); + .exportToCsvSearchArchiveUnitsByCriteria(searchQuery, + externalParametersService.buildVitamContextFromExternalParam()); return new ResponseEntity<>(exportedResult, HttpStatus.OK); } @PostMapping(RestApi.EXPORT_DIP) - public ResponseEntity exportDIPByCriteria( - @RequestHeader(value = CommonConstants.X_TENANT_ID_HEADER) final Integer tenantId, - @RequestHeader(value = CommonConstants.X_ACCESS_CONTRACT_ID_HEADER) final String accessContractId, - @RequestBody final ExportDipCriteriaDto exportDipCriteriaDto) + public ResponseEntity exportDIPByCriteria(@RequestBody final ExportDipCriteriaDto exportDipCriteriaDto) throws VitamClientException, InvalidParseOperationException, PreconditionFailedException { - SanityChecker.sanitizeCriteria(exportDipCriteriaDto); - ParameterChecker - .checkParameter( - MANDATORY_PARAMETERS, - tenantId, accessContractId, exportDipCriteriaDto); - SanityChecker.checkSecureParameter(accessContractId); + ParameterChecker.checkParameter(MANDATORY_PARAMETERS, exportDipCriteriaDto); SanityChecker.sanitizeCriteria(exportDipCriteriaDto); LOGGER.debug("Export DIP by criteria {}", exportDipCriteriaDto); - final VitamContext vitamContext = securityService.buildVitamContext(tenantId, accessContractId); - String result = exportDipInternalService.requestToExportDIP(exportDipCriteriaDto, vitamContext); + String result = exportDipInternalService.requestToExportDIP(exportDipCriteriaDto, + externalParametersService.buildVitamContextFromExternalParam()); return new ResponseEntity<>(result, HttpStatus.OK); } @PostMapping(RestApi.TRANSFER_REQUEST) - public ResponseEntity transferRequest( - @RequestHeader(value = CommonConstants.X_TENANT_ID_HEADER) final Integer tenantId, - @RequestHeader(value = CommonConstants.X_ACCESS_CONTRACT_ID_HEADER) final String accessContractId, - @RequestBody final TransferRequestDto transferRequestDto) + public ResponseEntity transferRequest(@RequestBody final TransferRequestDto transferRequestDto) throws VitamClientException, InvalidParseOperationException, PreconditionFailedException { SanityChecker.sanitizeCriteria(transferRequestDto); - ParameterChecker.checkParameter( - MANDATORY_PARAMETERS, - tenantId, accessContractId, transferRequestDto); - SanityChecker.checkSecureParameter(accessContractId); + ParameterChecker.checkParameter(MANDATORY_PARAMETERS, transferRequestDto); SanityChecker.sanitizeCriteria(transferRequestDto); LOGGER.debug("Transfer request {}", transferRequestDto); - final VitamContext vitamContext = securityService.buildVitamContext(tenantId, accessContractId); - String result = transferVitamOperationsInternalService.transferRequest(transferRequestDto, vitamContext); + String result = transferVitamOperationsInternalService.transferRequest(transferRequestDto, + externalParametersService.buildVitamContextFromExternalParam()); return new ResponseEntity<>(result, HttpStatus.OK); } @PostMapping(RestApi.ELIMINATION_ANALYSIS) public JsonNode startEliminationAnalysis( - @RequestHeader(value = CommonConstants.X_TENANT_ID_HEADER) final Integer tenantId, - @RequestHeader(value = CommonConstants.X_ACCESS_CONTRACT_ID_HEADER) final String accessContractId, @RequestBody final SearchCriteriaDto searchQuery) throws VitamClientException, InvalidParseOperationException, PreconditionFailedException { - SanityChecker.sanitizeCriteria(searchQuery); - ParameterChecker - .checkParameter( - MANDATORY_PARAMETERS, - tenantId, accessContractId, searchQuery); - SanityChecker.checkSecureParameter(accessContractId); + ParameterChecker.checkParameter(MANDATORY_PARAMETERS, searchQuery); SanityChecker.sanitizeCriteria(searchQuery); LOGGER.debug("Calling elimination analysis by criteria {} ", searchQuery); - final VitamContext vitamContext = securityService.buildVitamContext(tenantId, accessContractId); - return archiveSearchEliminationInternalService.startEliminationAnalysis(searchQuery, vitamContext); + return archiveSearchEliminationInternalService.startEliminationAnalysis(searchQuery, + externalParametersService.buildVitamContextFromExternalParam()); } @PostMapping(RestApi.ELIMINATION_ACTION) - public JsonNode startEliminationAction( - @RequestHeader(value = CommonConstants.X_TENANT_ID_HEADER) final Integer tenantId, - @RequestHeader(value = CommonConstants.X_ACCESS_CONTRACT_ID_HEADER) final String accessContractId, - @RequestBody final SearchCriteriaDto searchQuery) + public JsonNode startEliminationAction(@RequestBody final SearchCriteriaDto searchQuery) throws VitamClientException, InvalidParseOperationException, PreconditionFailedException { SanityChecker.sanitizeCriteria(searchQuery); - ParameterChecker - .checkParameter( - MANDATORY_PARAMETERS, - tenantId, accessContractId, searchQuery); - SanityChecker.checkSecureParameter(accessContractId); + ParameterChecker.checkParameter(MANDATORY_PARAMETERS, searchQuery); LOGGER.debug("Calling elimination action by criteria {} ", searchQuery); - final VitamContext vitamContext = securityService.buildVitamContext(tenantId, accessContractId); - return archiveSearchEliminationInternalService.startEliminationAction(searchQuery, vitamContext); + return archiveSearchEliminationInternalService.startEliminationAction(searchQuery, + externalParametersService.buildVitamContextFromExternalParam()); } @PostMapping(RestApi.MASS_UPDATE_UNITS_RULES) public ResponseEntity updateArchiveUnitsRules( - @RequestHeader(value = CommonConstants.X_TENANT_ID_HEADER) final Integer tenantId, - @RequestHeader(value = CommonConstants.X_ACCESS_CONTRACT_ID_HEADER) final String accessContractId, @RequestBody final RuleSearchCriteriaDto ruleSearchCriteriaDto) throws VitamClientException, InvalidParseOperationException, PreconditionFailedException { SanityChecker.sanitizeCriteria(ruleSearchCriteriaDto); - ParameterChecker - .checkParameter(MANDATORY_PARAMETERS, - tenantId, accessContractId, ruleSearchCriteriaDto); - SanityChecker.checkSecureParameter(accessContractId); + ParameterChecker.checkParameter(MANDATORY_PARAMETERS, ruleSearchCriteriaDto); LOGGER.debug("Update Archive Units Rules by criteria {}", ruleSearchCriteriaDto); - final VitamContext vitamContext = securityService.buildVitamContext(tenantId, accessContractId); - String result = - archiveSearchMgtRulesInternalService.updateArchiveUnitsRules(vitamContext, ruleSearchCriteriaDto); + String result = archiveSearchMgtRulesInternalService.updateArchiveUnitsRules(ruleSearchCriteriaDto, + externalParametersService.buildVitamContextFromExternalParam()); return new ResponseEntity<>(result, HttpStatus.OK); } @PostMapping(RestApi.COMPUTED_INHERITED_RULES) public ResponseEntity computedInheritedRules( - @RequestHeader(value = CommonConstants.X_TENANT_ID_HEADER) final Integer tenantId, - @RequestHeader(value = CommonConstants.X_ACCESS_CONTRACT_ID_HEADER) final String accessContractId, @RequestBody final SearchCriteriaDto searchCriteriaDto) throws VitamClientException, InvalidParseOperationException, PreconditionFailedException { SanityChecker.sanitizeCriteria(searchCriteriaDto); - ParameterChecker - .checkParameter( - MANDATORY_PARAMETERS, - tenantId, accessContractId, searchCriteriaDto); - SanityChecker.checkSecureParameter(accessContractId); + ParameterChecker.checkParameter(MANDATORY_PARAMETERS, searchCriteriaDto); LOGGER.debug("Computed Inherited Rules by criteria {}", searchCriteriaDto); - final VitamContext vitamContext = securityService.buildVitamContext(tenantId, accessContractId); - String result = archiveInternalService.computedInheritedRules(vitamContext, searchCriteriaDto); + String result = archiveInternalService.computedInheritedRules(searchCriteriaDto, + externalParametersService.buildVitamContextFromExternalParam()); return new ResponseEntity<>(result, HttpStatus.OK); } @PostMapping(RestApi.UNIT_WITH_INHERITED_RULES) - public ResultsDto selectUnitsWithInheritedRules( - @RequestHeader(value = CommonConstants.X_TENANT_ID_HEADER) final Integer tenantId, - @RequestHeader(value = CommonConstants.X_ACCESS_CONTRACT_ID_HEADER) final String accessContractId, - @RequestBody final SearchCriteriaDto searchQuery) - throws VitamClientException, IOException, InvalidParseOperationException, PreconditionFailedException { + public ResultsDto selectUnitsWithInheritedRules(@RequestBody final SearchCriteriaDto searchQuery) + throws InvalidParseOperationException, PreconditionFailedException, VitamClientException, IOException { SanityChecker.sanitizeCriteria(searchQuery); - ParameterChecker - .checkParameter(MANDATORY_PARAMETERS, - tenantId, accessContractId, searchQuery); - SanityChecker.checkSecureParameter(accessContractId); - LOGGER.debug( - "Calling service select Unit With Inherited Rules for tenantId {}, accessContractId {} By Criteria {} ", - tenantId, - accessContractId, searchQuery); - final VitamContext vitamContext = securityService.buildVitamContext(tenantId, accessContractId); - return archiveInternalService.selectUnitWithInheritedRules(searchQuery, vitamContext); + ParameterChecker.checkParameter(MANDATORY_PARAMETERS, searchQuery); + LOGGER.debug("Calling service select Unit With Inherited Rules By Criteria {} ", searchQuery); + return archiveInternalService.selectUnitWithInheritedRules(searchQuery, + externalParametersService.buildVitamContextFromExternalParam()); } @PostMapping(RestApi.RECLASSIFICATION) public ResponseEntity reclassification( - @RequestHeader(value = CommonConstants.X_TENANT_ID_HEADER) final Integer tenantId, - @RequestHeader(value = CommonConstants.X_ACCESS_CONTRACT_ID_HEADER) final String accessContractId, @RequestBody final ReclassificationCriteriaDto reclassificationCriteriaDto) throws VitamClientException, InvalidParseOperationException, PreconditionFailedException { - SanityChecker.sanitizeCriteria(reclassificationCriteriaDto); - ParameterChecker - .checkParameter(MANDATORY_PARAMETERS, - tenantId, accessContractId, reclassificationCriteriaDto); - SanityChecker.checkSecureParameter(accessContractId); + ParameterChecker.checkParameter(MANDATORY_PARAMETERS, reclassificationCriteriaDto); LOGGER.debug("Reclassification query {}", reclassificationCriteriaDto); - final VitamContext vitamContext = securityService.buildVitamContext(tenantId, accessContractId); - String result = archiveInternalService.reclassification(vitamContext, reclassificationCriteriaDto); + String result = archiveInternalService.reclassification(reclassificationCriteriaDto, + externalParametersService.buildVitamContextFromExternalParam()); return new ResponseEntity<>(result, HttpStatus.OK); } @PutMapping(RestApi.ARCHIVE_UNIT_INFO + CommonConstants.PATH_ID) - public String updateUnitById(final @PathVariable("id") String id, - @RequestHeader(value = CommonConstants.X_ACCESS_CONTRACT_ID_HEADER) final String accessContractId, + public String updateUnitById(final @PathVariable("id") String unitId, @RequestBody final UnitDescriptiveMetadataDto unitDescriptiveMetadataDto) throws VitamClientException, InvalidParseOperationException, PreconditionFailedException { - ParameterChecker - .checkParameter(IDENTIFIER_ACCESS_CONTRACT_MANDATORY, id, accessContractId); - ParameterChecker - .checkParameter("The request body is mandatory: ", unitDescriptiveMetadataDto); - SanityChecker.checkSecureParameter(accessContractId, id); - LOGGER.debug("update archiveUnit id {}", id); - VitamContext vitamContext = - securityService.buildVitamContext(securityService.getTenantIdentifier(), accessContractId); - return archiveInternalService.updateUnitById(id, unitDescriptiveMetadataDto, vitamContext); + ParameterChecker.checkParameter(IDENTIFIER_MANDATORY, unitId); + ParameterChecker.checkParameter("The request body is mandatory: ", unitDescriptiveMetadataDto); + SanityChecker.checkSecureParameter(unitId); + LOGGER.debug("update archiveUnit id {}", unitId); + return archiveInternalService.updateUnitById(unitId, unitDescriptiveMetadataDto, + externalParametersService.buildVitamContextFromExternalParam()); } @ApiOperation(value = "Upload an ATR for transfer acknowledgment operation", consumes = MediaType.APPLICATION_OCTET_STREAM_VALUE) @PostMapping(value = RestApi.TRANSFER_ACKNOWLEDGMENT, consumes = MediaType.APPLICATION_OCTET_STREAM_VALUE) - public String transferAcknowledgment( - InputStream inputStream, - @RequestHeader(value = CommonConstants.X_ACCESS_CONTRACT_ID_HEADER) final String accessContractId, + public String transferAcknowledgment(InputStream inputStream, @RequestHeader(value = CommonConstants.X_ORIGINAL_FILENAME_HEADER) final String originalFileName - ) - throws PreconditionFailedException, InvalidParseOperationException, - VitamClientException { + ) throws PreconditionFailedException, VitamClientException { LOGGER.debug("[INTERNAL] : Transfer Acknowledgment Operation"); - ParameterChecker.checkParameter("The access contract and the fileName are mandatory parameters: ", - accessContractId, + ParameterChecker.checkParameter("The fileName is mandatory parameter: ", originalFileName); SanityChecker.isValidFileName(originalFileName); SafeFileChecker.checkSafeFilePath(originalFileName); - SanityChecker.checkSecureParameter(accessContractId); LOGGER.debug("Transfer Acknowledgment : upload atr xml filename: {}", originalFileName); - - VitamContext vitamContext = - securityService.buildVitamContext(securityService.getTenantIdentifier(), accessContractId); - - return transferVitamOperationsInternalService.transferAcknowledgmentService(inputStream, vitamContext); + return transferVitamOperationsInternalService.transferAcknowledgmentService(inputStream, + externalParametersService.buildVitamContextFromExternalParam()); } @GetMapping(CommonConstants.EXTERNAL_ONTOLOGIES_LIST) diff --git a/api/api-archive-search/archive-search-internal/src/main/java/fr/gouv/vitamui/archive/internal/server/rulesupdate/converter/RuleOperationsConverter.java b/api/api-archive-search/archive-search-internal/src/main/java/fr/gouv/vitamui/archive/internal/server/rulesupdate/converter/RuleOperationsConverter.java index 8b1807bc933..62b77897743 100644 --- a/api/api-archive-search/archive-search-internal/src/main/java/fr/gouv/vitamui/archive/internal/server/rulesupdate/converter/RuleOperationsConverter.java +++ b/api/api-archive-search/archive-search-internal/src/main/java/fr/gouv/vitamui/archive/internal/server/rulesupdate/converter/RuleOperationsConverter.java @@ -79,12 +79,13 @@ public ManagementMetadataAction convertToVitamManagementMetadataAction( public RuleAction convertToVitamRuleAction(VitamUiRuleAction vitamUiRuleAction) { final RuleAction ruleAction = VitamUIUtils. copyProperties(vitamUiRuleAction, new RuleAction()); - if(vitamUiRuleAction.getStartDate() != null) { - LocalDateTime startDate = - LocalDateTime.parse(vitamUiRuleAction.getStartDate(), ArchiveSearchConsts.ISO_FRENCH_FORMATER).withHour(0) - .withMinute(0).withSecond(0).withNano(0); - ruleAction.setStartDate(ArchiveSearchConsts.ONLY_DATE_FRENCH_FORMATER.format(startDate.plusDays(1))); -} + if (vitamUiRuleAction.getStartDate() != null) { + LocalDateTime startDate = + LocalDateTime.parse(vitamUiRuleAction.getStartDate(), ArchiveSearchConsts.ISO_FRENCH_FORMATER) + .withHour(0) + .withMinute(0).withSecond(0).withNano(0); + ruleAction.setStartDate(ArchiveSearchConsts.ONLY_DATE_FRENCH_FORMATER.format(startDate.plusDays(1))); + } return ruleAction; } @@ -92,20 +93,22 @@ public RuleAction convertToVitamRuleAction(VitamUiRuleAction vitamUiRuleAction) public RuleActions convertToVitamRuleActions(VitamUiRuleActions vitamUiRuleActions) { final RuleActions ruleActions = VitamUIUtils. - copyProperties(vitamUiRuleActions,new RuleActions()); + copyProperties(vitamUiRuleActions, new RuleActions()); List> vitamAdd = new ArrayList<>(); List> vitamDelete = new ArrayList<>(); List> vitamUpdate = new ArrayList<>(); - if(vitamUiRuleActions != null && vitamUiRuleActions.getAddOrUpdateMetadata() != null) { - ruleActions.setAddOrUpdateMetadata(convertToVitamManagementMetadataAction(vitamUiRuleActions.getAddOrUpdateMetadata())); + if (vitamUiRuleActions != null && vitamUiRuleActions.getAddOrUpdateMetadata() != null) { + ruleActions.setAddOrUpdateMetadata( + convertToVitamManagementMetadataAction(vitamUiRuleActions.getAddOrUpdateMetadata())); } - if(vitamUiRuleActions != null && vitamUiRuleActions.getDeleteMetadata() != null) { - ruleActions.setDeleteMetadata(convertToVitamManagementMetadataAction(vitamUiRuleActions.getDeleteMetadata())); + if (vitamUiRuleActions != null && vitamUiRuleActions.getDeleteMetadata() != null) { + ruleActions.setDeleteMetadata( + convertToVitamManagementMetadataAction(vitamUiRuleActions.getDeleteMetadata())); } - if(vitamUiRuleActions != null && !vitamUiRuleActions.getAdd().isEmpty()){ + if (vitamUiRuleActions != null && !vitamUiRuleActions.getAdd().isEmpty()) { vitamUiRuleActions.getAdd().forEach(rule -> { Map map = new HashMap<>(); rule.keySet().forEach(ruleCategoryActionKey -> @@ -116,7 +119,7 @@ public RuleActions convertToVitamRuleActions(VitamUiRuleActions vitamUiRuleActio ruleActions.setAdd(vitamAdd); } - if(vitamUiRuleActions != null && !vitamUiRuleActions.getUpdate().isEmpty()){ + if (vitamUiRuleActions != null && !vitamUiRuleActions.getUpdate().isEmpty()) { vitamUiRuleActions.getUpdate().forEach(rule -> { Map map = new HashMap<>(); rule.keySet().forEach(ruleCategoryActionKey -> @@ -127,7 +130,7 @@ public RuleActions convertToVitamRuleActions(VitamUiRuleActions vitamUiRuleActio ruleActions.setUpdate(vitamUpdate); } - if(vitamUiRuleActions != null && !vitamUiRuleActions.getDelete().isEmpty()){ + if (vitamUiRuleActions != null && !vitamUiRuleActions.getDelete().isEmpty()) { vitamUiRuleActions.getDelete().forEach(rule -> { Map map = new HashMap<>(); rule.keySet().forEach(ruleCategoryActionKey -> @@ -143,9 +146,9 @@ public RuleActions convertToVitamRuleActions(VitamUiRuleActions vitamUiRuleActio public RuleCategoryAction convertToRuleCategoryAction(VitamUiRuleCategoryAction vitamUiRuleCategoryAction) { RuleCategoryAction ruleCategoryAction = VitamUIUtils. - copyProperties(vitamUiRuleCategoryAction,new RuleCategoryAction()); + copyProperties(vitamUiRuleCategoryAction, new RuleCategoryAction()); List ruleActionList = new ArrayList<>(); - if(vitamUiRuleCategoryAction != null && vitamUiRuleCategoryAction.getRules() != null) { + if (vitamUiRuleCategoryAction != null && vitamUiRuleCategoryAction.getRules() != null) { vitamUiRuleCategoryAction.getRules().forEach(rule -> ruleActionList.add(convertToVitamRuleAction(rule)) ); @@ -157,11 +160,11 @@ public RuleCategoryAction convertToRuleCategoryAction(VitamUiRuleCategoryAction public RuleCategoryActionDeletion convertToRuleCategoryActionDeletion( VitamUiRuleCategoryActionDeletion vitamUiRuleCategoryActionDeletion) { - RuleCategoryActionDeletion ruleCategoryActionDeletion = VitamUIUtils. - copyProperties(vitamUiRuleCategoryActionDeletion,new RuleCategoryActionDeletion()); + RuleCategoryActionDeletion ruleCategoryActionDeletion = VitamUIUtils. + copyProperties(vitamUiRuleCategoryActionDeletion, new RuleCategoryActionDeletion()); List ruleActionList = new ArrayList<>(); - if(vitamUiRuleCategoryActionDeletion != null && vitamUiRuleCategoryActionDeletion.getRules() != null) { + if (vitamUiRuleCategoryActionDeletion != null && vitamUiRuleCategoryActionDeletion.getRules() != null) { vitamUiRuleCategoryActionDeletion.getRules().ifPresent(ruleCategoryAction -> { ruleCategoryAction.forEach(rule -> ruleActionList.add(convertToVitamRuleAction(rule))); diff --git a/api/api-archive-search/archive-search-internal/src/main/java/fr/gouv/vitamui/archive/internal/server/searchcriteria/converter/SearchCriteriaHistoryConverter.java b/api/api-archive-search/archive-search-internal/src/main/java/fr/gouv/vitamui/archive/internal/server/searchcriteria/converter/SearchCriteriaHistoryConverter.java index 46d78e10d94..97fce2a3faa 100644 --- a/api/api-archive-search/archive-search-internal/src/main/java/fr/gouv/vitamui/archive/internal/server/searchcriteria/converter/SearchCriteriaHistoryConverter.java +++ b/api/api-archive-search/archive-search-internal/src/main/java/fr/gouv/vitamui/archive/internal/server/searchcriteria/converter/SearchCriteriaHistoryConverter.java @@ -51,9 +51,6 @@ @Setter public class SearchCriteriaHistoryConverter implements Converter { - public SearchCriteriaHistoryConverter() { - } - @Override public String convertToLogbook(final SearchCriteriaHistoryDto dto) { final Map data = new LinkedHashMap<>(); diff --git a/api/api-archive-search/archive-search-internal/src/main/java/fr/gouv/vitamui/archive/internal/server/service/ArchiveSearchEliminationInternalService.java b/api/api-archive-search/archive-search-internal/src/main/java/fr/gouv/vitamui/archive/internal/server/service/ArchiveSearchEliminationInternalService.java index 90603e39b62..e9b3258d0ee 100644 --- a/api/api-archive-search/archive-search-internal/src/main/java/fr/gouv/vitamui/archive/internal/server/service/ArchiveSearchEliminationInternalService.java +++ b/api/api-archive-search/archive-search-internal/src/main/java/fr/gouv/vitamui/archive/internal/server/service/ArchiveSearchEliminationInternalService.java @@ -58,7 +58,6 @@ public class ArchiveSearchEliminationInternalService { private final EliminationService eliminationService; private final ArchiveSearchInternalService archiveSearchInternalService; - private final ObjectMapper objectMapper; @Autowired diff --git a/api/api-archive-search/archive-search-internal/src/main/java/fr/gouv/vitamui/archive/internal/server/service/ArchiveSearchInternalService.java b/api/api-archive-search/archive-search-internal/src/main/java/fr/gouv/vitamui/archive/internal/server/service/ArchiveSearchInternalService.java index 95626955e90..6094b8f0c33 100644 --- a/api/api-archive-search/archive-search-internal/src/main/java/fr/gouv/vitamui/archive/internal/server/service/ArchiveSearchInternalService.java +++ b/api/api-archive-search/archive-search-internal/src/main/java/fr/gouv/vitamui/archive/internal/server/service/ArchiveSearchInternalService.java @@ -380,7 +380,7 @@ public JsonNode createQueryForHoldingFillingUnit() { } - public String computedInheritedRules(final VitamContext vitamContext, final SearchCriteriaDto searchCriteriaDto) + public String computedInheritedRules(final SearchCriteriaDto searchCriteriaDto, final VitamContext vitamContext) throws VitamClientException { LOGGER.debug("Computed Inherited Rules by criteria {} ", searchCriteriaDto.toString()); JsonNode jsonNode = mapRequestToDslQuery(searchCriteriaDto); @@ -422,8 +422,8 @@ public ResultsDto selectUnitWithInheritedRules(final SearchCriteriaDto searchQue return response; } - public String reclassification(final VitamContext vitamContext, - final ReclassificationCriteriaDto reclassificationCriteriaDto) + public String reclassification( + final ReclassificationCriteriaDto reclassificationCriteriaDto, final VitamContext vitamContext) throws VitamClientException { if (reclassificationCriteriaDto == null) { throw new BadRequestException("Error reclassification criteria"); diff --git a/api/api-archive-search/archive-search-internal/src/main/java/fr/gouv/vitamui/archive/internal/server/service/ArchiveSearchMgtRulesInternalService.java b/api/api-archive-search/archive-search-internal/src/main/java/fr/gouv/vitamui/archive/internal/server/service/ArchiveSearchMgtRulesInternalService.java index 4aacebdf891..c81cdab8c03 100644 --- a/api/api-archive-search/archive-search-internal/src/main/java/fr/gouv/vitamui/archive/internal/server/service/ArchiveSearchMgtRulesInternalService.java +++ b/api/api-archive-search/archive-search-internal/src/main/java/fr/gouv/vitamui/archive/internal/server/service/ArchiveSearchMgtRulesInternalService.java @@ -80,8 +80,8 @@ public ArchiveSearchMgtRulesInternalService( this.unitService = unitService; } - public String updateArchiveUnitsRules(final VitamContext vitamContext, - final RuleSearchCriteriaDto ruleSearchCriteriaDto) + public String updateArchiveUnitsRules( + final RuleSearchCriteriaDto ruleSearchCriteriaDto, final VitamContext vitamContext) throws VitamClientException { LOGGER.debug("Add Rules to ArchiveUnits using query : {} and DSL actions : {}", ruleSearchCriteriaDto.getSearchCriteriaDto().toString(), ruleSearchCriteriaDto.getRuleActions()); diff --git a/api/api-archive-search/archive-search-internal/src/main/java/fr/gouv/vitamui/archive/internal/server/service/ExternalParametersService.java b/api/api-archive-search/archive-search-internal/src/main/java/fr/gouv/vitamui/archive/internal/server/service/ExternalParametersService.java new file mode 100644 index 00000000000..5b4934179c9 --- /dev/null +++ b/api/api-archive-search/archive-search-internal/src/main/java/fr/gouv/vitamui/archive/internal/server/service/ExternalParametersService.java @@ -0,0 +1,89 @@ +/* + * Copyright French Prime minister Office/SGMAP/DINSIC/Vitam Program (2015-2022) + * + * contact.vitam@culture.gouv.fr + * + * This software is a computer program whose purpose is to implement a digital archiving back-office system managing + * high volumetry securely and efficiently. + * + * This software is governed by the CeCILL 2.1 license under French law and abiding by the rules of distribution of free + * software. You can use, modify and/ or redistribute the software under the terms of the CeCILL 2.1 license as + * circulated by CEA, CNRS and INRIA at the following URL "https://cecill.info". + * + * As a counterpart to the access to the source code and rights to copy, modify and redistribute granted by the license, + * users are provided only with a limited warranty and the software's author, the holder of the economic rights, and the + * successive licensors have only limited liability. + * + * In this respect, the user's attention is drawn to the risks associated with loading, using, modifying and/or + * developing or reproducing the software by the user in light of its specific status of free software, that may mean + * that it is complicated to manipulate, and that also therefore means that it is reserved for developers and + * experienced professionals having in-depth computer knowledge. Users are therefore encouraged to load and test the + * software's suitability as regards their requirements in conditions enabling the security of their systems and/or data + * to be ensured and, more generally, to use and operate it in the same conditions as regards security. + * + * The fact that you are presently reading this means that you have had knowledge of the CeCILL 2.1 license and that you + * accept its terms. + */ + +package fr.gouv.vitamui.archive.internal.server.service; + +import fr.gouv.vitam.common.client.VitamContext; +import fr.gouv.vitamui.commons.api.domain.ExternalParametersDto; +import fr.gouv.vitamui.commons.api.domain.ParameterDto; +import fr.gouv.vitamui.iam.internal.client.ExternalParametersInternalRestClient; +import fr.gouv.vitamui.iam.security.service.InternalSecurityService; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Objects; + +/** + * The service to retrieve profile thresholds. + */ +@Service +public class ExternalParametersService { + public static final String PARAM_ACCESS_CONTRACT_NAME = "PARAM_ACCESS_CONTRACT"; + + private final ExternalParametersInternalRestClient externalParametersInternalRestClient; + private final InternalSecurityService securityService; + + @Autowired + public ExternalParametersService(final ExternalParametersInternalRestClient externalParametersInternalRestClient, + final InternalSecurityService securityService) { + this.externalParametersInternalRestClient = externalParametersInternalRestClient; + this.securityService = securityService; + } + + /** + * Service to return the access contract defined on profile using external parameters + * + * @return access contract throws IllegalArgumentException + */ + public String retrieveAccessContractFromExternalParam() { + ExternalParametersDto myExternalParameter = + externalParametersInternalRestClient.getMyExternalParameters(securityService.getHttpContext()); + if (myExternalParameter == null || CollectionUtils.isEmpty(myExternalParameter.getParameters())) { + throw new IllegalArgumentException("No external profile defined for access contract defined"); + } + + ParameterDto parameterAccessContract = myExternalParameter.getParameters().stream().filter( + parameter -> PARAM_ACCESS_CONTRACT_NAME.equals(parameter.getKey())) + .findFirst().orElse(null); + if (Objects.isNull(parameterAccessContract) || Objects.isNull(parameterAccessContract.getValue())) { + throw new IllegalArgumentException("No access contract defined"); + } + return parameterAccessContract.getValue(); + } + + /** + * This function create a VitamContext + * + * @return + */ + public VitamContext buildVitamContextFromExternalParam() { + return new VitamContext(securityService.getTenantIdentifier()).setAccessContract( + retrieveAccessContractFromExternalParam()) + .setApplicationSessionId(securityService.getApplicationId()); + } +} diff --git a/api/api-archive-search/archive-search-internal/src/main/java/fr/gouv/vitamui/archive/internal/server/service/TransferVitamOperationsInternalService.java b/api/api-archive-search/archive-search-internal/src/main/java/fr/gouv/vitamui/archive/internal/server/service/TransferVitamOperationsInternalService.java index 95b549e6bfb..6c26810c0f3 100644 --- a/api/api-archive-search/archive-search-internal/src/main/java/fr/gouv/vitamui/archive/internal/server/service/TransferVitamOperationsInternalService.java +++ b/api/api-archive-search/archive-search-internal/src/main/java/fr/gouv/vitamui/archive/internal/server/service/TransferVitamOperationsInternalService.java @@ -44,14 +44,16 @@ @Service public class TransferVitamOperationsInternalService { - private static final VitamUILogger LOGGER = VitamUILoggerFactory.getInstance(TransferVitamOperationsInternalService.class); + private static final VitamUILogger LOGGER = + VitamUILoggerFactory.getInstance(TransferVitamOperationsInternalService.class); public static final String OPERATION_IDENTIFIER = "itemId"; private final TransferAcknowledgmentService transferAcknowledgmentService; private final TransferRequestService transferRequestService; private final ArchiveSearchInternalService archiveSearchInternalService; - public TransferVitamOperationsInternalService(final TransferAcknowledgmentService transferAcknowledgmentService, final @Lazy ArchiveSearchInternalService archiveSearchInternalService, + public TransferVitamOperationsInternalService(final TransferAcknowledgmentService transferAcknowledgmentService, + final @Lazy ArchiveSearchInternalService archiveSearchInternalService, final TransferRequestService transferRequestService ) { this.transferAcknowledgmentService = transferAcknowledgmentService; @@ -96,7 +98,8 @@ public String transferRequest(final TransferRequestDto transferRequestDto, return response.findValue(OPERATION_IDENTIFIER).textValue(); } - public String transferAcknowledgmentService(InputStream atrInputStream, VitamContext vitamContext) throws VitamClientException { + public String transferAcknowledgmentService(InputStream atrInputStream, VitamContext vitamContext) + throws VitamClientException { LOGGER.debug("Transfer Acknowledgment Operation"); JsonNode transferAcknowledgmentResponse = diff --git a/api/api-archive-search/archive-search-internal/src/test/java/fr/gouv/vitamui/archive/internal/server/service/ArchiveSearchEliminationInternalServiceTest.java b/api/api-archive-search/archive-search-internal/src/test/java/fr/gouv/vitamui/archive/internal/server/service/ArchiveSearchEliminationInternalServiceTest.java index effded93a4c..4839cd19abe 100644 --- a/api/api-archive-search/archive-search-internal/src/test/java/fr/gouv/vitamui/archive/internal/server/service/ArchiveSearchEliminationInternalServiceTest.java +++ b/api/api-archive-search/archive-search-internal/src/test/java/fr/gouv/vitamui/archive/internal/server/service/ArchiveSearchEliminationInternalServiceTest.java @@ -74,7 +74,7 @@ public class ArchiveSearchEliminationInternalServiceTest { public void setUp() { ServerIdentityConfigurationBuilder.setup("identityName", "identityRole", 1, 0); archiveSearchEliminationInternalService = - new ArchiveSearchEliminationInternalService(archiveSearchInternalService, eliminationService,objectMapper); + new ArchiveSearchEliminationInternalService(archiveSearchInternalService, eliminationService, objectMapper); } @Test diff --git a/api/api-archive-search/archive-search-internal/src/test/java/fr/gouv/vitamui/archive/internal/server/service/ArchiveSearchInternalServiceTest.java b/api/api-archive-search/archive-search-internal/src/test/java/fr/gouv/vitamui/archive/internal/server/service/ArchiveSearchInternalServiceTest.java index 47b73c81dbf..46bf5fa22c1 100644 --- a/api/api-archive-search/archive-search-internal/src/test/java/fr/gouv/vitamui/archive/internal/server/service/ArchiveSearchInternalServiceTest.java +++ b/api/api-archive-search/archive-search-internal/src/test/java/fr/gouv/vitamui/archive/internal/server/service/ArchiveSearchInternalServiceTest.java @@ -116,7 +116,7 @@ public void setUp() { } @Test - void testSearchFilingHoldingSchemeResultsThanReturnVitamUISearchResponseDto() throws VitamClientException, + void testSearchFilingHoldingSchemeResultsThanReturnVitamUISearchResponseDto() throws VitamClientException, IOException, InvalidParseOperationException { // Given when(unitService.searchUnits(any(), any())) @@ -201,9 +201,9 @@ public void testReclassificationThenOK() throws Exception { //When //Then String expectingGuid = - archiveSearchInternalService.reclassification(new VitamContext(1), reclassificationCriteriaDto); + archiveSearchInternalService.reclassification(reclassificationCriteriaDto, new VitamContext(1)); assertThatCode(() -> { - archiveSearchInternalService.reclassification(new VitamContext(1), reclassificationCriteriaDto); + archiveSearchInternalService.reclassification(reclassificationCriteriaDto, new VitamContext(1)); }).doesNotThrowAnyException(); Assertions.assertThat(expectingGuid).isEqualTo("aeeaaaaaagh23tjvabz5gal6qlt6iaaaaaaq"); diff --git a/api/api-archive-search/archive-search-internal/src/test/java/fr/gouv/vitamui/archive/internal/server/service/ArchiveSearchMgtRulesInternalServiceTest.java b/api/api-archive-search/archive-search-internal/src/test/java/fr/gouv/vitamui/archive/internal/server/service/ArchiveSearchMgtRulesInternalServiceTest.java index 7ef79683571..091300a4c5a 100644 --- a/api/api-archive-search/archive-search-internal/src/test/java/fr/gouv/vitamui/archive/internal/server/service/ArchiveSearchMgtRulesInternalServiceTest.java +++ b/api/api-archive-search/archive-search-internal/src/test/java/fr/gouv/vitamui/archive/internal/server/service/ArchiveSearchMgtRulesInternalServiceTest.java @@ -210,11 +210,11 @@ public void testUpdateArchiveUnitsRulesWithCorrectAccessContractThenReturnSucces //When //Then String expectingGuid = - archiveSearchMgtRulesInternalService.updateArchiveUnitsRules(new VitamContext(1), - ruleSearchCriteriaDto); + archiveSearchMgtRulesInternalService.updateArchiveUnitsRules( + ruleSearchCriteriaDto, new VitamContext(1)); assertThatCode(() -> { - archiveSearchMgtRulesInternalService.updateArchiveUnitsRules(new VitamContext(1), - ruleSearchCriteriaDto); + archiveSearchMgtRulesInternalService.updateArchiveUnitsRules( + ruleSearchCriteriaDto, new VitamContext(1)); }).doesNotThrowAnyException(); Assertions.assertThat(expectingGuid).isEqualTo("aeeaaaaaagh23tjvabz5gal6qlt6iaaaaaaq"); @@ -280,7 +280,7 @@ public void testUpdateArchiveUnitsRulesWithInCorrectAccessContractThenReturBadRe //When //Then assertThatCode(() -> { - archiveSearchMgtRulesInternalService.updateArchiveUnitsRules(new VitamContext(1), ruleSearchCriteriaDto); + archiveSearchMgtRulesInternalService.updateArchiveUnitsRules(ruleSearchCriteriaDto, new VitamContext(1)); }).hasMessage("the access contract using to update unit rules has no writing permission to update units"); } diff --git a/api/api-archive-search/archive-search-internal/src/test/java/fr/gouv/vitamui/archive/internal/server/service/ExternalParametersServiceTest.java b/api/api-archive-search/archive-search-internal/src/test/java/fr/gouv/vitamui/archive/internal/server/service/ExternalParametersServiceTest.java new file mode 100644 index 00000000000..e4e10f9401f --- /dev/null +++ b/api/api-archive-search/archive-search-internal/src/test/java/fr/gouv/vitamui/archive/internal/server/service/ExternalParametersServiceTest.java @@ -0,0 +1,134 @@ +/* + * + * * Copyright French Prime minister Office/SGMAP/DINSIC/Vitam Program (2015-2022) + * * + * * contact.vitam@culture.gouv.fr + * * + * * This software is a computer program whose purpose is to implement a digital archiving back-office system managing + * * high volumetry securely and efficiently. + * * + * * This software is governed by the CeCILL 2.1 license under French law and abiding by the rules of distribution of free + * * software. You can use, modify and/ or redistribute the software under the terms of the CeCILL 2.1 license as + * * circulated by CEA, CNRS and INRIA at the following URL "https://cecill.info". + * * + * * As a counterpart to the access to the source code and rights to copy, modify and redistribute granted by the license, + * * users are provided only with a limited warranty and the software's author, the holder of the economic rights, and the + * * successive licensors have only limited liability. + * * + * * In this respect, the user's attention is drawn to the risks associated with loading, using, modifying and/or + * * developing or reproducing the software by the user in light of its specific status of free software, that may mean + * * that it is complicated to manipulate, and that also therefore means that it is reserved for developers and + * * experienced professionals having in-depth computer knowledge. Users are therefore encouraged to load and test the + * * software's suitability as regards their requirements in conditions enabling the security of their systems and/or data + * * to be ensured and, more generally, to use and operate it in the same conditions as regards security. + * * + * * The fact that you are presently reading this means that you have had knowledge of the CeCILL 2.1 license and that you + * * accept its terms. + * + */ + +package fr.gouv.vitamui.archive.internal.server.service; + +import fr.gouv.vitam.common.client.VitamContext; +import fr.gouv.vitamui.commons.api.domain.ExternalParametersDto; +import fr.gouv.vitamui.commons.api.domain.ParameterDto; +import fr.gouv.vitamui.commons.test.utils.ServerIdentityConfigurationBuilder; +import fr.gouv.vitamui.iam.internal.client.ExternalParametersInternalRestClient; +import fr.gouv.vitamui.iam.security.service.InternalSecurityService; +import org.assertj.core.util.Lists; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mockito; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.test.context.junit.jupiter.SpringExtension; + +import java.util.List; + +@ExtendWith(SpringExtension.class) +public class ExternalParametersServiceTest { + + public static final String SOME_ACCESS_CONTRACT = "SOME_ACCESS_CONTRACT"; + public static final int SOME_TENANT = 1; + @MockBean(name = "exteralParametersInternalRestClient") + private ExternalParametersInternalRestClient exteralParametersInternalRestClient; + + @MockBean(name = "securityService") + private InternalSecurityService securityService; + + + @InjectMocks + private ExternalParametersService externalParametersService; + + + @BeforeEach + public void setUp() { + ServerIdentityConfigurationBuilder.setup("identityName", "identityRole", 1, 0); + externalParametersService = + new ExternalParametersService(exteralParametersInternalRestClient, securityService); + } + + @Test + void shouldThrowIllegalArgumentExceptionWhenNoAccessContract() { + ExternalParametersDto myExternalParameter = new ExternalParametersDto(); + ParameterDto parameterDto = new ParameterDto(); + parameterDto.setValue("ANY_VALUE"); + parameterDto.setKey("ANY_PARAM"); + myExternalParameter.setParameters(List.of(parameterDto)); + Mockito.when(exteralParametersInternalRestClient.getMyExternalParameters(securityService.getHttpContext())) + .thenReturn(myExternalParameter); + + IllegalArgumentException thrown = Assertions.assertThrows(IllegalArgumentException.class, () -> { + externalParametersService.retrieveAccessContractFromExternalParam(); + }); + + Assertions.assertEquals("No access contract defined", thrown.getMessage()); + } + + @Test + void shouldThrowAnotherIllegalArgumentExceptionWhenNoAccessContract() { + ExternalParametersDto myExternalParameter = new ExternalParametersDto(); + myExternalParameter.setParameters(Lists.emptyList()); + Mockito.when(exteralParametersInternalRestClient.getMyExternalParameters(securityService.getHttpContext())) + .thenReturn(myExternalParameter); + + IllegalArgumentException thrown = Assertions.assertThrows(IllegalArgumentException.class, () -> { + externalParametersService.retrieveAccessContractFromExternalParam(); + }); + + Assertions.assertEquals("No external profile defined for access contract defined", thrown.getMessage()); + } + + @Test + void shouldRetrieveTheRightAccessContractWhenDefiend() { + ExternalParametersDto myExternalParameter = new ExternalParametersDto(); + ParameterDto parameterDto = new ParameterDto(); + parameterDto.setValue(SOME_ACCESS_CONTRACT); + parameterDto.setKey(ExternalParametersService.PARAM_ACCESS_CONTRACT_NAME); + myExternalParameter.setParameters(List.of(parameterDto)); + Mockito.when(exteralParametersInternalRestClient.getMyExternalParameters(securityService.getHttpContext())) + .thenReturn(myExternalParameter); + + String accessContractFound = externalParametersService.retrieveAccessContractFromExternalParam(); + Assertions.assertEquals(SOME_ACCESS_CONTRACT, accessContractFound); + } + + @Test + void shouldRetrieveTheRightAccessContractFromContextWhenDefiend() { + ExternalParametersDto myExternalParameter = new ExternalParametersDto(); + ParameterDto parameterDto = new ParameterDto(); + parameterDto.setValue(SOME_ACCESS_CONTRACT); + parameterDto.setKey(ExternalParametersService.PARAM_ACCESS_CONTRACT_NAME); + myExternalParameter.setParameters(List.of(parameterDto)); + + Mockito.when(exteralParametersInternalRestClient.getMyExternalParameters(securityService.getHttpContext())) + .thenReturn(myExternalParameter); + Mockito.when(securityService.getTenantIdentifier()) + .thenReturn(SOME_TENANT); + VitamContext someContext = new VitamContext(SOME_TENANT).setAccessContract(SOME_ACCESS_CONTRACT); + VitamContext context = externalParametersService.buildVitamContextFromExternalParam(); + Assertions.assertEquals(someContext, context); + } +} diff --git a/api/api-archive-search/archive-search-internal/src/test/java/fr/gouv/vitamui/archive/internal/server/service/TransferVitamOperationsInternalServiceTest.java b/api/api-archive-search/archive-search-internal/src/test/java/fr/gouv/vitamui/archive/internal/server/service/TransferVitamOperationsInternalServiceTest.java index 7f9c299a5ca..63d7a15f597 100644 --- a/api/api-archive-search/archive-search-internal/src/test/java/fr/gouv/vitamui/archive/internal/server/service/TransferVitamOperationsInternalServiceTest.java +++ b/api/api-archive-search/archive-search-internal/src/test/java/fr/gouv/vitamui/archive/internal/server/service/TransferVitamOperationsInternalServiceTest.java @@ -116,8 +116,10 @@ void transferAcknowledgmentRequest_should_pass_and_Vitam_Return_OperationDetails (new ObjectMapper().readTree(vitamResponseToString)); //When - Mockito.when(transferAcknowledgmentService.transferAcknowledgment(eq(vitamContext), any())).thenReturn(vitamJsonResponse); - String response = transferVitamOperationsInternalService.transferAcknowledgmentService(atrFileInputStream, vitamContext); + Mockito.when(transferAcknowledgmentService.transferAcknowledgment(eq(vitamContext), any())) + .thenReturn(vitamJsonResponse); + String response = + transferVitamOperationsInternalService.transferAcknowledgmentService(atrFileInputStream, vitamContext); //Then assertThat(response).isEqualTo("aeeaaaaaaghduohdabjwkamdgezrs7aaaaaq"); diff --git a/api/api-collect/collect-external-client/src/main/java/fr/gouv/vitamui/collect/external/client/CollectExternalRestClient.java b/api/api-collect/collect-external-client/src/main/java/fr/gouv/vitamui/collect/external/client/CollectExternalRestClient.java index 64c4b626f3f..dc375c711df 100644 --- a/api/api-collect/collect-external-client/src/main/java/fr/gouv/vitamui/collect/external/client/CollectExternalRestClient.java +++ b/api/api-collect/collect-external-client/src/main/java/fr/gouv/vitamui/collect/external/client/CollectExternalRestClient.java @@ -45,7 +45,6 @@ import org.springframework.http.HttpEntity; import org.springframework.http.HttpMethod; import org.springframework.http.ResponseEntity; -import org.springframework.util.MultiValueMap; import org.springframework.web.client.RestTemplate; import org.springframework.web.util.UriComponentsBuilder; @@ -99,8 +98,8 @@ private String getTransactionUrl() { public ArchiveUnitsDto searchArchiveUnitsByProjectAndSearchQuery(ExternalHttpContext context, String projectId, SearchCriteriaDto searchQuery) { - MultiValueMap headers = buildSearchHeaders(context); - final HttpEntity request = new HttpEntity<>(searchQuery, headers); + + final HttpEntity request = new HttpEntity<>(searchQuery); final ResponseEntity response = restTemplate.exchange(getUrl() + "/" + projectId + ARCHIVE_UNITS, HttpMethod.POST, request, ArchiveUnitsDto.class); diff --git a/api/api-collect/collect-external-client/src/main/java/fr/gouv/vitamui/collect/external/client/CollectTransactionExternalRestClient.java b/api/api-collect/collect-external-client/src/main/java/fr/gouv/vitamui/collect/external/client/CollectTransactionExternalRestClient.java index f7b3990884f..ef8b77e7c37 100644 --- a/api/api-collect/collect-external-client/src/main/java/fr/gouv/vitamui/collect/external/client/CollectTransactionExternalRestClient.java +++ b/api/api-collect/collect-external-client/src/main/java/fr/gouv/vitamui/collect/external/client/CollectTransactionExternalRestClient.java @@ -93,7 +93,7 @@ public String getPathUrl() { public ArchiveUnitsDto searchArchiveUnitsByProjectAndSearchQuery(ExternalHttpContext context, String transactionId, SearchCriteriaDto searchQuery) { - MultiValueMap headers = buildSearchHeaders(context); + MultiValueMap headers = buildHeaders(context); final HttpEntity request = new HttpEntity<>(searchQuery, headers); final ResponseEntity response = restTemplate.exchange(getUrl() + "/" + transactionId + ARCHIVE_UNITS, HttpMethod.POST, request, @@ -111,7 +111,7 @@ public ResponseEntity findUnitById(String id, ExternalHttpContext co public ResponseEntity exportCsvArchiveUnitsByCriteria(String transactionId, SearchCriteriaDto query, ExternalHttpContext context) { - MultiValueMap headers = buildSearchHeaders(context); + MultiValueMap headers = buildHeaders(context); final HttpEntity request = new HttpEntity<>(query, headers); return restTemplate.exchange(getUrl() + "/" + transactionId + ARCHIVE_UNITS + EXPORT_CSV_SEARCH_PATH, HttpMethod.POST, request, Resource.class); @@ -183,7 +183,7 @@ public List getExternalOntologiesList(ExternalHttpContext context) public ResponseEntity selectUnitWithInheritedRules(ExternalHttpContext context, String transactionId, SearchCriteriaDto query) { - MultiValueMap headers = buildSearchHeaders(context); + MultiValueMap headers = buildHeaders(context); final HttpEntity request = new HttpEntity<>(query, headers); final ResponseEntity response = diff --git a/api/api-collect/collect-internal-client/src/main/java/fr/gouv/vitamui/collect/internal/client/CollectTransactionInternalRestClient.java b/api/api-collect/collect-internal-client/src/main/java/fr/gouv/vitamui/collect/internal/client/CollectTransactionInternalRestClient.java index ae72a456f64..90991f913e2 100644 --- a/api/api-collect/collect-internal-client/src/main/java/fr/gouv/vitamui/collect/internal/client/CollectTransactionInternalRestClient.java +++ b/api/api-collect/collect-internal-client/src/main/java/fr/gouv/vitamui/collect/internal/client/CollectTransactionInternalRestClient.java @@ -140,7 +140,7 @@ public ResponseEntity findUnitById(String id, final InternalHttpCont public ArchiveUnitsDto searchCollectProjectArchiveUnits(InternalHttpContext context, String projectId, SearchCriteriaDto searchQuery) { - MultiValueMap headers = buildSearchHeaders(context); + MultiValueMap headers = buildHeaders(context); final HttpEntity request = new HttpEntity<>(searchQuery, headers); final ResponseEntity response = restTemplate.exchange(getUrl() + "/" + projectId + ARCHIVE_UNITS, HttpMethod.POST, @@ -151,7 +151,7 @@ public ArchiveUnitsDto searchCollectProjectArchiveUnits(InternalHttpContext cont public Resource exportCsvArchiveUnitsByCriteria(String projectId, final SearchCriteriaDto query, final InternalHttpContext context) { - MultiValueMap headers = buildSearchHeaders(context); + MultiValueMap headers = buildHeaders(context); final HttpEntity request = new HttpEntity<>(query, headers); final ResponseEntity response = restTemplate.exchange(getUrl() + "/" + projectId + ARCHIVE_UNITS + EXPORT_CSV_SEARCH_PATH, HttpMethod.POST, @@ -187,7 +187,7 @@ public List getExternalOntologiesList(final InternalHttpContext con public ResultsDto selectUnitWithInheritedRules(InternalHttpContext context, String transactionId, SearchCriteriaDto query) { LOGGER.debug("Calling select Unit With Inherited Rules with query {} ", query); - MultiValueMap headers = buildSearchHeaders(context); + MultiValueMap headers = buildHeaders(context); final HttpEntity request = new HttpEntity<>(query, headers); final ResponseEntity response = restTemplate.exchange( diff --git a/api/api-collect/collect-internal/src/main/java/fr/gouv/vitamui/collect/internal/server/config/ApiCollectInternalServerConfig.java b/api/api-collect/collect-internal/src/main/java/fr/gouv/vitamui/collect/internal/server/config/ApiCollectInternalServerConfig.java index bf839d0ddb1..7de77fbb54a 100644 --- a/api/api-collect/collect-internal/src/main/java/fr/gouv/vitamui/collect/internal/server/config/ApiCollectInternalServerConfig.java +++ b/api/api-collect/collect-internal/src/main/java/fr/gouv/vitamui/collect/internal/server/config/ApiCollectInternalServerConfig.java @@ -30,10 +30,10 @@ import com.fasterxml.jackson.databind.ObjectMapper; import fr.gouv.vitamui.collect.internal.server.dao.SearchCriteriaHistoryRepository; import fr.gouv.vitamui.collect.internal.server.security.WebSecurityConfig; -import fr.gouv.vitamui.collect.internal.server.service.TransactionArchiveUnitInternalService; import fr.gouv.vitamui.collect.internal.server.service.ProjectInternalService; import fr.gouv.vitamui.collect.internal.server.service.ProjectObjectGroupInternalService; import fr.gouv.vitamui.collect.internal.server.service.SearchCriteriaHistoryInternalService; +import fr.gouv.vitamui.collect.internal.server.service.TransactionArchiveUnitInternalService; import fr.gouv.vitamui.collect.internal.server.service.TransactionInternalService; import fr.gouv.vitamui.collect.internal.server.service.converters.SearchCriteriaHistoryConverter; import fr.gouv.vitamui.commons.api.application.AbstractContextConfiguration; @@ -46,6 +46,7 @@ import fr.gouv.vitamui.commons.vitam.api.config.VitamAccessConfig; import fr.gouv.vitamui.commons.vitam.api.config.VitamAdministrationConfig; import fr.gouv.vitamui.commons.vitam.api.config.VitamCollectConfig; +import fr.gouv.vitamui.iam.internal.client.ExternalParametersInternalRestClient; import fr.gouv.vitamui.iam.internal.client.IamInternalRestClientFactory; import fr.gouv.vitamui.iam.internal.client.UserInternalRestClient; import fr.gouv.vitamui.iam.security.provider.InternalApiAuthenticationProvider; @@ -133,5 +134,9 @@ public SearchCriteriaHistoryInternalService searchCriteriaHistoryInternalService } - + @Bean + public ExternalParametersInternalRestClient externalParametersInternalRestClient( + final IamInternalRestClientFactory iamInternalRestClientFactory) { + return iamInternalRestClientFactory.getExternalParametersInternalRestClient(); + } } diff --git a/api/api-collect/collect-internal/src/main/java/fr/gouv/vitamui/collect/internal/server/rest/ProjectInternalController.java b/api/api-collect/collect-internal/src/main/java/fr/gouv/vitamui/collect/internal/server/rest/ProjectInternalController.java index be3d061b489..787e4740993 100644 --- a/api/api-collect/collect-internal/src/main/java/fr/gouv/vitamui/collect/internal/server/rest/ProjectInternalController.java +++ b/api/api-collect/collect-internal/src/main/java/fr/gouv/vitamui/collect/internal/server/rest/ProjectInternalController.java @@ -27,12 +27,12 @@ package fr.gouv.vitamui.collect.internal.server.rest; -import fr.gouv.vitam.common.client.VitamContext; import fr.gouv.vitam.common.exception.InvalidParseOperationException; import fr.gouv.vitam.common.exception.VitamClientException; import fr.gouv.vitamui.collect.common.dto.CollectProjectDto; import fr.gouv.vitamui.collect.common.dto.CollectTransactionDto; import fr.gouv.vitamui.collect.common.rest.RestApi; +import fr.gouv.vitamui.collect.internal.server.service.ExternalParametersService; import fr.gouv.vitamui.collect.internal.server.service.ProjectInternalService; import fr.gouv.vitamui.common.security.SafeFileChecker; import fr.gouv.vitamui.common.security.SanityChecker; @@ -43,7 +43,6 @@ import fr.gouv.vitamui.commons.api.exception.PreconditionFailedException; import fr.gouv.vitamui.commons.api.logger.VitamUILogger; import fr.gouv.vitamui.commons.api.logger.VitamUILoggerFactory; -import fr.gouv.vitamui.iam.security.service.InternalSecurityService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; @@ -73,14 +72,14 @@ public class ProjectInternalController { private static final VitamUILogger LOGGER = VitamUILoggerFactory.getInstance(ProjectInternalController.class); - private final InternalSecurityService securityService; private final ProjectInternalService projectInternalService; + private final ExternalParametersService externalParametersService; @Autowired public ProjectInternalController(final ProjectInternalService projectInternalService, - final InternalSecurityService securityService) { - this.securityService = securityService; + final ExternalParametersService externalParametersService) { this.projectInternalService = projectInternalService; + this.externalParametersService = externalParametersService; } @GetMapping(params = {"page", "size"}) @@ -91,8 +90,8 @@ public PaginatedValuesDto getAllProjectsPaginated(@RequestPar SanityChecker.sanitizeCriteria(criteria); LOGGER.debug("getPaginateEntities page={}, size={}, criteria={}, orderBy={}, ascendant={}", page, size, criteria, orderBy, direction); - final VitamContext vitamContext = securityService.buildVitamContext(securityService.getTenantIdentifier()); - return projectInternalService.getAllProjectsPaginated(vitamContext, page, size, orderBy, direction, criteria); + return projectInternalService.getAllProjectsPaginated(page, size, orderBy, direction, criteria, + externalParametersService.buildVitamContextFromExternalParam()); } @PostMapping() @@ -101,20 +100,21 @@ public CollectProjectDto createProject(@RequestBody CollectProjectDto collectPro ParameterChecker.checkParameter("the project is mandatory : ", collectProjectDto); SanityChecker.sanitizeCriteria(collectProjectDto); LOGGER.debug("Project to create {}", collectProjectDto); - final VitamContext vitamContext = securityService.buildVitamContext(securityService.getTenantIdentifier()); - return projectInternalService.createProject(vitamContext, collectProjectDto); + return projectInternalService.createProject(collectProjectDto, + externalParametersService.buildVitamContextFromExternalParam()); } - @PostMapping(value = CommonConstants.PATH_ID+ "/transactions") - public CollectTransactionDto createTransactionForProject(final @PathVariable("id") String id, @RequestBody CollectTransactionDto collectTransactionDto) + @PostMapping(value = CommonConstants.PATH_ID + "/transactions") + public CollectTransactionDto createTransactionForProject(final @PathVariable("id") String id, + @RequestBody CollectTransactionDto collectTransactionDto) throws InvalidParseOperationException { ParameterChecker.checkParameter("The Identifier is a mandatory parameter: ", id); ParameterChecker.checkParameter("The transaction is a mandatory parameter: ", collectTransactionDto); SanityChecker.checkSecureParameter(id); SanityChecker.sanitizeCriteria(collectTransactionDto); LOGGER.debug("Transaction to create {}", collectTransactionDto); - final VitamContext vitamContext = securityService.buildVitamContext(securityService.getTenantIdentifier()); - return projectInternalService.createTransactionForProject(vitamContext, collectTransactionDto, id); + return projectInternalService.createTransactionForProject(collectTransactionDto, id, + externalParametersService.buildVitamContextFromExternalParam()); } @ApiOperation(value = "Upload and stream collect zip file", consumes = MediaType.APPLICATION_OCTET_STREAM_VALUE) @@ -129,8 +129,8 @@ public void streamingUpload( SafeFileChecker.checkSafeFilePath(originalFileName); SanityChecker.checkSecureParameter(transactionId); LOGGER.debug("[Internal] upload collect zip file : {}", originalFileName); - final VitamContext vitamContext = securityService.buildVitamContext(securityService.getTenantIdentifier()); - projectInternalService.streamingUpload(vitamContext, inputStream, transactionId, originalFileName); + projectInternalService.streamingUpload(inputStream, transactionId, originalFileName, + externalParametersService.buildVitamContextFromExternalParam()); } @PutMapping(PATH_ID) @@ -141,8 +141,9 @@ public CollectProjectDto updateProject(final @PathVariable("id") String id, SanityChecker.sanitizeCriteria(collectProjectDto); SanityChecker.checkSecureParameter(id); LOGGER.debug("[Internal] Project to update : {}", collectProjectDto); - final VitamContext vitamContext = securityService.buildVitamContext(securityService.getTenantIdentifier()); - return projectInternalService.update(vitamContext, id, collectProjectDto); + + return projectInternalService.update(id, collectProjectDto, + externalParametersService.buildVitamContextFromExternalParam()); } @GetMapping(PATH_ID) @@ -151,8 +152,9 @@ public CollectProjectDto findProjectById(final @PathVariable("id") String id) ParameterChecker.checkParameter(IDENTIFIER_MANDATORY_PARAMETER, id); SanityChecker.checkSecureParameter(id); LOGGER.debug("Project to get {}", id); - final VitamContext vitamContext = securityService.buildVitamContext(securityService.getTenantIdentifier()); - return projectInternalService.getProjectById(id, vitamContext); + + return projectInternalService.getProjectById(id, + externalParametersService.buildVitamContextFromExternalParam()); } @DeleteMapping(PATH_ID) @@ -161,18 +163,17 @@ public void deleteProjectById(final @PathVariable("id") String id) ParameterChecker.checkParameter(IDENTIFIER_MANDATORY_PARAMETER, id); SanityChecker.checkSecureParameter(id); LOGGER.debug("Project to delete {}", id); - final VitamContext vitamContext = securityService.buildVitamContext(securityService.getTenantIdentifier()); - projectInternalService.deleteProjectById(id, vitamContext); + projectInternalService.deleteProjectById(id, externalParametersService.buildVitamContextFromExternalParam()); } - @GetMapping(PATH_ID + LAST_TRANSACTION_PATH) + @GetMapping(PATH_ID + LAST_TRANSACTION_PATH) public CollectTransactionDto findLastTransactionByProjectId(final @PathVariable("id") String id) throws InvalidParseOperationException, PreconditionFailedException, VitamClientException { ParameterChecker.checkParameter("The Identifier is a mandatory parameter: ", id); SanityChecker.checkSecureParameter(id); LOGGER.debug("Find the transaction by project with ID {}", id); - final VitamContext vitamContext = securityService.buildVitamContext(securityService.getTenantIdentifier()); - return projectInternalService.getLastTransactionForProjectId(id, vitamContext); + return projectInternalService.getLastTransactionForProjectId(id, + externalParametersService.buildVitamContextFromExternalParam()); } @ApiOperation(value = "Get transactions by project paginated") @@ -184,9 +185,8 @@ public PaginatedValuesDto getTransactionsByProjectPaginat ParameterChecker.checkParameter(IDENTIFIER_MANDATORY_PARAMETER, projectId); SanityChecker.checkSecureParameter(projectId); LOGGER.debug("getPaginateEntities page={}, size={}, orderBy={}, ascendant={}", page, size, orderBy, direction); - final VitamContext vitamContext = securityService.buildVitamContext(securityService.getTenantIdentifier()); return projectInternalService.getTransactionsByProjectPaginated(projectId, page, size, orderBy, direction, - vitamContext); + externalParametersService.buildVitamContextFromExternalParam()); } diff --git a/api/api-collect/collect-internal/src/main/java/fr/gouv/vitamui/collect/internal/server/rest/ProjectObjectGroupInternalController.java b/api/api-collect/collect-internal/src/main/java/fr/gouv/vitamui/collect/internal/server/rest/ProjectObjectGroupInternalController.java index b9d5c7fae1a..98eed6eeae9 100644 --- a/api/api-collect/collect-internal/src/main/java/fr/gouv/vitamui/collect/internal/server/rest/ProjectObjectGroupInternalController.java +++ b/api/api-collect/collect-internal/src/main/java/fr/gouv/vitamui/collect/internal/server/rest/ProjectObjectGroupInternalController.java @@ -29,10 +29,10 @@ package fr.gouv.vitamui.collect.internal.server.rest; -import fr.gouv.vitam.common.client.VitamContext; import fr.gouv.vitam.common.exception.InvalidParseOperationException; import fr.gouv.vitam.common.exception.VitamClientException; import fr.gouv.vitamui.collect.common.rest.RestApi; +import fr.gouv.vitamui.collect.internal.server.service.ExternalParametersService; import fr.gouv.vitamui.collect.internal.server.service.ProjectObjectGroupInternalService; import fr.gouv.vitamui.common.security.SanityChecker; import fr.gouv.vitamui.commons.api.CommonConstants; @@ -41,7 +41,6 @@ import fr.gouv.vitamui.commons.api.logger.VitamUILogger; import fr.gouv.vitamui.commons.api.logger.VitamUILoggerFactory; import fr.gouv.vitamui.commons.vitam.api.dto.ResultsDto; -import fr.gouv.vitamui.iam.security.service.InternalSecurityService; import io.swagger.annotations.Api; import org.springframework.core.io.InputStreamResource; import org.springframework.core.io.Resource; @@ -50,7 +49,6 @@ import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestHeader; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @@ -67,35 +65,31 @@ @Api(tags = "collect", value = "Groupe d'object d'un projet") public class ProjectObjectGroupInternalController { - private static final VitamUILogger LOGGER = VitamUILoggerFactory.getInstance(ProjectObjectGroupInternalController.class); - private final InternalSecurityService securityService; + private static final VitamUILogger LOGGER = + VitamUILoggerFactory.getInstance(ProjectObjectGroupInternalController.class); private final ProjectObjectGroupInternalService projectObjectGroupInternalService; + private final ExternalParametersService externalParametersService; + private static final String IDENTIFIER_MANDATORY = "The identifier is mandatory parameter: "; - private static final String IDENTIFIER_ACCESS_CONTRACT_MANDATORY= - "The identifier, the accessContract Id are mandatory parameters: "; - - public ProjectObjectGroupInternalController(InternalSecurityService securityService, - ProjectObjectGroupInternalService projectObjectGroupInternalService) { - this.securityService = securityService; + public ProjectObjectGroupInternalController(ProjectObjectGroupInternalService projectObjectGroupInternalService, + final ExternalParametersService externalParametersService) { this.projectObjectGroupInternalService = projectObjectGroupInternalService; + this.externalParametersService = externalParametersService; } @GetMapping(value = DOWNLOAD_ARCHIVE_UNIT + CommonConstants.PATH_ID, produces = MediaType.APPLICATION_OCTET_STREAM_VALUE) public Mono> downloadObjectFromUnit(final @PathVariable("id") String id, - final @RequestParam("usage") String usage, final @RequestParam("version") Integer version, - @RequestHeader(value = CommonConstants.X_ACCESS_CONTRACT_ID_HEADER) final String accessContractId + final @RequestParam("usage") String usage, final @RequestParam("version") Integer version ) throws InvalidParseOperationException, PreconditionFailedException { ParameterChecker - .checkParameter(IDENTIFIER_ACCESS_CONTRACT_MANDATORY, id, accessContractId); - SanityChecker.checkSecureParameter(id, accessContractId, usage); - LOGGER.debug("Access Contract {} ", accessContractId); + .checkParameter(IDENTIFIER_MANDATORY, id); + SanityChecker.checkSecureParameter(id, usage); LOGGER.debug("Download Archive Unit Object with id {}", id); - final VitamContext vitamContext = - securityService.buildVitamContext(securityService.getTenantIdentifier(), accessContractId); return Mono.fromCallable(() -> { - Response response = projectObjectGroupInternalService.downloadObjectFromUnit(id, usage, version, vitamContext); + Response response = projectObjectGroupInternalService.downloadObjectFromUnit(id, usage, version, + externalParametersService.buildVitamContextFromExternalParam()); return new InputStreamResource((InputStream) response.getEntity()); }).subscribeOn(Schedulers.boundedElastic()) .flatMap(resource -> Mono.just(ResponseEntity @@ -104,15 +98,13 @@ public Mono> downloadObjectFromUnit(final @PathVariable } @GetMapping(CommonConstants.PATH_ID) - public ResultsDto findObjectById(final @PathVariable("id") String id, - @RequestHeader(value = CommonConstants.X_ACCESS_CONTRACT_ID_HEADER) final String accessContractId) + public ResultsDto findObjectById(final @PathVariable("id") String id) throws InvalidParseOperationException, VitamClientException { ParameterChecker - .checkParameter(IDENTIFIER_ACCESS_CONTRACT_MANDATORY, id, accessContractId); - SanityChecker.checkSecureParameter(id, accessContractId); + .checkParameter(IDENTIFIER_MANDATORY, id); + SanityChecker.checkSecureParameter(id); LOGGER.debug("Get ObjectGroup By id : {}", id); - VitamContext vitamContext = - securityService.buildVitamContext(securityService.getTenantIdentifier(), accessContractId); - return projectObjectGroupInternalService.findObjectById(id, vitamContext); + return projectObjectGroupInternalService.findObjectById(id, + externalParametersService.buildVitamContextFromExternalParam()); } } diff --git a/api/api-collect/collect-internal/src/main/java/fr/gouv/vitamui/collect/internal/server/rest/SearchCriteriaHistoryInternalController.java b/api/api-collect/collect-internal/src/main/java/fr/gouv/vitamui/collect/internal/server/rest/SearchCriteriaHistoryInternalController.java index 562215e5392..bf4c779b073 100644 --- a/api/api-collect/collect-internal/src/main/java/fr/gouv/vitamui/collect/internal/server/rest/SearchCriteriaHistoryInternalController.java +++ b/api/api-collect/collect-internal/src/main/java/fr/gouv/vitamui/collect/internal/server/rest/SearchCriteriaHistoryInternalController.java @@ -64,11 +64,11 @@ public class SearchCriteriaHistoryInternalController { private static final VitamUILogger LOGGER = VitamUILoggerFactory.getInstance( SearchCriteriaHistoryInternalController.class); - private SearchCriteriaHistoryInternalService searchCriteriaHistoryInternalService; @Autowired - public SearchCriteriaHistoryInternalController(final SearchCriteriaHistoryInternalService searchCriteriaHistoryInternalService) { + public SearchCriteriaHistoryInternalController( + final SearchCriteriaHistoryInternalService searchCriteriaHistoryInternalService) { this.searchCriteriaHistoryInternalService = searchCriteriaHistoryInternalService; } @@ -88,8 +88,9 @@ public SearchCriteriaHistoryDto create(final @Valid @RequestBody SearchCriteriaH } @DeleteMapping(CommonConstants.PATH_ID) - public void delete(final @PathVariable("id") String id) throws InvalidParseOperationException, PreconditionFailedException { - ParameterChecker.checkParameter("Identifier is mandatory : " , id); + public void delete(final @PathVariable("id") String id) + throws InvalidParseOperationException, PreconditionFailedException { + ParameterChecker.checkParameter("Identifier is mandatory : ", id); SanityChecker.checkSecureParameter(id); LOGGER.debug("Delete SearchCriteriaHistory with id :{}", id); searchCriteriaHistoryInternalService.delete(id); @@ -98,7 +99,7 @@ public void delete(final @PathVariable("id") String id) throws InvalidParseOpera @PutMapping(CommonConstants.PATH_ID) public SearchCriteriaHistoryDto update(final @RequestBody SearchCriteriaHistoryDto dto) throws InvalidParseOperationException, PreconditionFailedException { - ParameterChecker.checkParameter("Identifier is mandatory : " , dto); + ParameterChecker.checkParameter("Identifier is mandatory : ", dto); SanityChecker.sanitizeCriteria(dto); LOGGER.debug("Update SearchCriteriaHistory with id :{}", dto.getId()); return searchCriteriaHistoryInternalService.update(dto); diff --git a/api/api-collect/collect-internal/src/main/java/fr/gouv/vitamui/collect/internal/server/rest/TransactionArchiveUnitInternalController.java b/api/api-collect/collect-internal/src/main/java/fr/gouv/vitamui/collect/internal/server/rest/TransactionArchiveUnitInternalController.java index 895526810d6..29657ec92f4 100644 --- a/api/api-collect/collect-internal/src/main/java/fr/gouv/vitamui/collect/internal/server/rest/TransactionArchiveUnitInternalController.java +++ b/api/api-collect/collect-internal/src/main/java/fr/gouv/vitamui/collect/internal/server/rest/TransactionArchiveUnitInternalController.java @@ -29,12 +29,12 @@ package fr.gouv.vitamui.collect.internal.server.rest; -import fr.gouv.vitam.common.client.VitamContext; import fr.gouv.vitam.common.database.builder.request.exception.InvalidCreateOperationException; import fr.gouv.vitam.common.exception.InvalidParseOperationException; import fr.gouv.vitam.common.exception.VitamClientException; import fr.gouv.vitamui.archives.search.common.dto.ArchiveUnitsDto; import fr.gouv.vitamui.archives.search.common.rest.RestApi; +import fr.gouv.vitamui.collect.internal.server.service.ExternalParametersService; import fr.gouv.vitamui.collect.internal.server.service.TransactionArchiveUnitInternalService; import fr.gouv.vitamui.common.security.SanityChecker; import fr.gouv.vitamui.commons.api.CommonConstants; @@ -75,22 +75,23 @@ public class TransactionArchiveUnitInternalController { VitamUILoggerFactory.getInstance(TransactionArchiveUnitInternalController.class); private final InternalSecurityService securityService; private final TransactionArchiveUnitInternalService transactionArchiveUnitInternalService; - + private final ExternalParametersService externalParametersService; private static final String MANDATORY_PARAMETERS = - "The tenant Id, the accessContract Id and the SearchCriteria are mandatory parameters: "; + "The tenant Id, the SearchCriteria are mandatory parameters: "; private static final String IDENTIFIER_ACCESS_CONTRACT_MANDATORY = - "The identifier, the accessContract Id are mandatory parameters: "; + "The identifier is mandatory parameter: "; public TransactionArchiveUnitInternalController(InternalSecurityService securityService, - TransactionArchiveUnitInternalService transactionArchiveUnitInternalService) { + TransactionArchiveUnitInternalService transactionArchiveUnitInternalService, + final ExternalParametersService externalParametersService) { this.securityService = securityService; this.transactionArchiveUnitInternalService = transactionArchiveUnitInternalService; + this.externalParametersService = externalParametersService; } @PostMapping("/{transactionId}" + ARCHIVE_UNITS) public ArchiveUnitsDto searchArchiveUnitsByCriteria( @RequestHeader(value = CommonConstants.X_TENANT_ID_HEADER) final Integer tenantId, - @RequestHeader(value = CommonConstants.X_ACCESS_CONTRACT_ID_HEADER) final String accessContractId, @PathVariable("transactionId") final String transactionId, @RequestBody final SearchCriteriaDto searchQuery) throws VitamClientException, IOException, InvalidParseOperationException, PreconditionFailedException, @@ -98,48 +99,41 @@ public ArchiveUnitsDto searchArchiveUnitsByCriteria( SanityChecker.sanitizeCriteria(searchQuery); ParameterChecker - .checkParameter("The tenant Id, the accessContract Id and the SearchCriteria are mandatory parameters: ", - tenantId, accessContractId, searchQuery); - SanityChecker.checkSecureParameter(accessContractId, transactionId); - LOGGER.debug("Calling service searchArchiveUnits for tenantId {}, accessContractId {} By Criteria {} ", - tenantId, - accessContractId, searchQuery); - final VitamContext vitamContext = securityService.buildVitamContext(tenantId, accessContractId); + .checkParameter("The tenant Id and the SearchCriteria are mandatory parameters: ", + tenantId, searchQuery); + SanityChecker.checkSecureParameter(transactionId); + LOGGER.debug("Calling service searchArchiveUnits for tenantId {} by Criteria {} ", + tenantId, searchQuery); return transactionArchiveUnitInternalService.searchArchiveUnitsByCriteria(transactionId, searchQuery, - vitamContext); - + externalParametersService.buildVitamContextFromExternalParam()); } @PostMapping("/{transactionId}" + ARCHIVE_UNITS + EXPORT_CSV_SEARCH_PATH) public ResponseEntity exportCsvArchiveUnitsByCriteria( @RequestHeader(value = CommonConstants.X_TENANT_ID_HEADER) final Integer tenantId, - @RequestHeader(value = CommonConstants.X_ACCESS_CONTRACT_ID_HEADER) final String accessContractId, @PathVariable("transactionId") final String transactionId, @RequestBody final SearchCriteriaDto searchQuery) throws VitamClientException, InvalidParseOperationException, PreconditionFailedException { - SanityChecker.checkSecureParameter(accessContractId, transactionId); + SanityChecker.checkSecureParameter(transactionId); SanityChecker.sanitizeCriteria(searchQuery); LOGGER.debug("Export to CSV file Archive Units by criteria {}", searchQuery); - final VitamContext vitamContext = securityService.buildVitamContext(tenantId, accessContractId); Resource exportedResult = transactionArchiveUnitInternalService - .exportToCsvSearchArchiveUnitsByCriteria(transactionId, searchQuery, vitamContext); + .exportToCsvSearchArchiveUnitsByCriteria(transactionId, searchQuery, + externalParametersService.buildVitamContextFromExternalParam()); return new ResponseEntity<>(exportedResult, HttpStatus.OK); } @GetMapping(ARCHIVE_UNIT_INFO + CommonConstants.PATH_ID) - public ResultsDto findUnitById(final @PathVariable("id") String id, - @RequestHeader(value = CommonConstants.X_ACCESS_CONTRACT_ID_HEADER) final String accessContractId) + public ResultsDto findUnitById(final @PathVariable("id") String id) throws VitamClientException, InvalidParseOperationException, PreconditionFailedException { - ParameterChecker - .checkParameter("The Id and the accessContract Id are mandatory parameters: ", - id, accessContractId); - SanityChecker.checkSecureParameter(id, accessContractId); + ParameterChecker.checkParameter("The Id is mandatory parameter: ", id); + SanityChecker.checkSecureParameter(id); LOGGER.debug("UA Details {}", id); - VitamContext vitamContext = - securityService.buildVitamContext(securityService.getTenantIdentifier(), accessContractId); - return transactionArchiveUnitInternalService.findArchiveUnitById(id, vitamContext); + + return transactionArchiveUnitInternalService.findArchiveUnitById(id, + externalParametersService.buildVitamContextFromExternalParam()); } @GetMapping(CommonConstants.OBJECTS_PATH + CommonConstants.PATH_ID) @@ -149,9 +143,8 @@ public ResultsDto findObjectGroupById(final @PathVariable("id") String id) .checkParameter(IDENTIFIER_ACCESS_CONTRACT_MANDATORY, id); SanityChecker.checkSecureParameter(id); LOGGER.debug("[INTERNAL] : Get ObjectGroup By id : {}", id); - VitamContext vitamContext = - securityService.buildVitamContext(securityService.getTenantIdentifier()); - return transactionArchiveUnitInternalService.findObjectGroupById(id, vitamContext); + return transactionArchiveUnitInternalService.findObjectGroupById(id, + externalParametersService.buildVitamContextFromExternalParam()); } @GetMapping(CommonConstants.EXTERNAL_ONTOLOGIES_LIST) @@ -166,17 +159,15 @@ public List getExternalOntologiesList() throws IOException { public ResultsDto selectUnitsWithInheritedRules( @PathVariable("transactionId") final String transactionId, @RequestHeader(value = CommonConstants.X_TENANT_ID_HEADER) final Integer tenantId, - @RequestHeader(value = CommonConstants.X_ACCESS_CONTRACT_ID_HEADER) final String accessContractId, @RequestBody final SearchCriteriaDto searchQuery) throws VitamClientException, IOException, InvalidParseOperationException, PreconditionFailedException { SanityChecker.sanitizeCriteria(searchQuery); - ParameterChecker.checkParameter(MANDATORY_PARAMETERS, tenantId, accessContractId, searchQuery); - SanityChecker.checkSecureParameter(accessContractId, transactionId); + ParameterChecker.checkParameter(MANDATORY_PARAMETERS, tenantId, searchQuery); + SanityChecker.checkSecureParameter(transactionId); LOGGER.debug( - "Calling service select Unit With Inherited Rules for tenantId {}, accessContractId {} By Criteria {} ", - tenantId, accessContractId, searchQuery); - final VitamContext vitamContext = securityService.buildVitamContext(tenantId, accessContractId); + "Calling service select Unit With Inherited Rules for tenantId {}, By Criteria {} ", + tenantId, searchQuery); return transactionArchiveUnitInternalService.selectUnitWithInheritedRules(searchQuery, transactionId, - vitamContext); + externalParametersService.buildVitamContextFromExternalParam()); } } diff --git a/api/api-collect/collect-internal/src/main/java/fr/gouv/vitamui/collect/internal/server/rest/TransactionInternalController.java b/api/api-collect/collect-internal/src/main/java/fr/gouv/vitamui/collect/internal/server/rest/TransactionInternalController.java index 303f0215ac0..5c2f9f4fe70 100644 --- a/api/api-collect/collect-internal/src/main/java/fr/gouv/vitamui/collect/internal/server/rest/TransactionInternalController.java +++ b/api/api-collect/collect-internal/src/main/java/fr/gouv/vitamui/collect/internal/server/rest/TransactionInternalController.java @@ -27,11 +27,11 @@ package fr.gouv.vitamui.collect.internal.server.rest; -import fr.gouv.vitam.common.client.VitamContext; import fr.gouv.vitam.common.exception.InvalidParseOperationException; import fr.gouv.vitam.common.exception.VitamClientException; import fr.gouv.vitamui.collect.common.dto.CollectTransactionDto; import fr.gouv.vitamui.collect.common.rest.RestApi; +import fr.gouv.vitamui.collect.internal.server.service.ExternalParametersService; import fr.gouv.vitamui.collect.internal.server.service.TransactionInternalService; import fr.gouv.vitamui.common.security.SafeFileChecker; import fr.gouv.vitamui.common.security.SanityChecker; @@ -41,7 +41,6 @@ import fr.gouv.vitamui.commons.api.exception.RequestTimeOutException; import fr.gouv.vitamui.commons.api.logger.VitamUILogger; import fr.gouv.vitamui.commons.api.logger.VitamUILoggerFactory; -import fr.gouv.vitamui.iam.security.service.InternalSecurityService; import io.swagger.annotations.Api; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; @@ -67,16 +66,16 @@ public class TransactionInternalController { private static final VitamUILogger LOGGER = VitamUILoggerFactory.getInstance(TransactionInternalController.class); - private final InternalSecurityService securityService; private final TransactionInternalService transactionInternalService; + private final ExternalParametersService externalParametersService; private static final String IDENTIFIER_MANDATORY_MESSAGE = "The Identifier is a mandatory parameter: "; @Autowired public TransactionInternalController(final TransactionInternalService transactionInternalService, - final InternalSecurityService securityService) { - this.securityService = securityService; + final ExternalParametersService externalParametersService) { this.transactionInternalService = transactionInternalService; + this.externalParametersService = externalParametersService; } @PutMapping(CommonConstants.PATH_ID + SEND_PATH) @@ -85,8 +84,7 @@ public void sendTransaction(final @PathVariable("id") String id) ParameterChecker.checkParameter(IDENTIFIER_MANDATORY_MESSAGE, id); SanityChecker.checkSecureParameter(id); LOGGER.debug("Transaction to send {}", id); - final VitamContext vitamContext = securityService.buildVitamContext(securityService.getTenantIdentifier()); - transactionInternalService.sendTransaction(id, vitamContext); + transactionInternalService.sendTransaction(id, externalParametersService.buildVitamContextFromExternalParam()); } @PutMapping(CommonConstants.PATH_ID + VALIDATE_PATH) @@ -95,8 +93,8 @@ public void validateTransaction(final @PathVariable("id") String id) ParameterChecker.checkParameter(IDENTIFIER_MANDATORY_MESSAGE, id); SanityChecker.checkSecureParameter(id); LOGGER.debug("Transaction to close {}", id); - final VitamContext vitamContext = securityService.buildVitamContext(securityService.getTenantIdentifier()); - transactionInternalService.validateTransaction(id, vitamContext); + transactionInternalService.validateTransaction(id, + externalParametersService.buildVitamContextFromExternalParam()); } @PutMapping(CommonConstants.PATH_ID + REOPEN_PATH) @@ -105,8 +103,8 @@ public void reopenTransaction(final @PathVariable("id") String id) ParameterChecker.checkParameter(IDENTIFIER_MANDATORY_MESSAGE, id); SanityChecker.checkSecureParameter(id); LOGGER.debug("Transaction to reopen {}", id); - final VitamContext vitamContext = securityService.buildVitamContext(securityService.getTenantIdentifier()); - transactionInternalService.reopenTransaction(id, vitamContext); + transactionInternalService.reopenTransaction(id, + externalParametersService.buildVitamContextFromExternalParam()); } @PutMapping(CommonConstants.PATH_ID + ABORT_PATH) @@ -115,22 +113,23 @@ public void abortTransaction(final @PathVariable("id") String id) ParameterChecker.checkParameter(IDENTIFIER_MANDATORY_MESSAGE, id); SanityChecker.checkSecureParameter(id); LOGGER.debug("Transaction to abort {}", id); - final VitamContext vitamContext = securityService.buildVitamContext(securityService.getTenantIdentifier()); - transactionInternalService.abortTransaction(id, vitamContext); + transactionInternalService.abortTransaction(id, externalParametersService.buildVitamContextFromExternalParam()); } - @GetMapping(CommonConstants.PATH_ID ) - public CollectTransactionDto getTransactionById(final @PathVariable("id") String id) throws VitamClientException, InvalidParseOperationException { + @GetMapping(CommonConstants.PATH_ID) + public CollectTransactionDto getTransactionById(final @PathVariable("id") String id) + throws VitamClientException, InvalidParseOperationException { ParameterChecker.checkParameter(IDENTIFIER_MANDATORY_MESSAGE, id); SanityChecker.checkSecureParameter(id); LOGGER.debug("Project Id {}", id); - final VitamContext vitamContext = securityService.buildVitamContext(securityService.getTenantIdentifier()); - return transactionInternalService.getTransactionById(id, vitamContext); + return transactionInternalService.getTransactionById(id, + externalParametersService.buildVitamContextFromExternalParam()); } @PutMapping(value = CommonConstants.TRANSACTION_PATH_ID + UPDATE_UNITS_METADATA_PATH, consumes = MediaType.APPLICATION_OCTET_STREAM_VALUE) - public String updateArchiveUnitsMetadataFromFile(final @PathVariable("transactionId") String transactionId, InputStream inputStream, + public String updateArchiveUnitsMetadataFromFile(final @PathVariable("transactionId") String transactionId, + InputStream inputStream, @RequestHeader(value = CommonConstants.X_ORIGINAL_FILENAME_HEADER) final String originalFileName) throws InvalidParseOperationException, PreconditionFailedException, RequestTimeOutException { @@ -140,18 +139,20 @@ public String updateArchiveUnitsMetadataFromFile(final @PathVariable("transactio SanityChecker.isValidFileName(originalFileName); SafeFileChecker.checkSafeFilePath(originalFileName); LOGGER.debug("[Internal] csv FileName {}", originalFileName); - final VitamContext vitamContext = securityService.buildVitamContext(securityService.getTenantIdentifier()); - return transactionInternalService.updateArchiveUnitsFromFile(vitamContext, inputStream, transactionId); + + return transactionInternalService.updateArchiveUnitsFromFile(inputStream, transactionId, + externalParametersService.buildVitamContextFromExternalParam()); } + @PutMapping public CollectTransactionDto updateTransaction(@RequestBody CollectTransactionDto transactionDto) - throws InvalidParseOperationException, PreconditionFailedException, VitamClientException { + throws InvalidParseOperationException, PreconditionFailedException { ParameterChecker.checkParameter(IDENTIFIER_MANDATORY_MESSAGE, transactionDto); SanityChecker.sanitizeCriteria(transactionDto); LOGGER.debug("[Internal] Transaction to update : {}", transactionDto); - final VitamContext vitamContext = securityService.buildVitamContext(securityService.getTenantIdentifier()); - return transactionInternalService.updateTransaction(transactionDto, vitamContext); + return transactionInternalService.updateTransaction(transactionDto, + externalParametersService.buildVitamContextFromExternalParam()); } } diff --git a/api/api-collect/collect-internal/src/main/java/fr/gouv/vitamui/collect/internal/server/service/ExternalParametersService.java b/api/api-collect/collect-internal/src/main/java/fr/gouv/vitamui/collect/internal/server/service/ExternalParametersService.java new file mode 100644 index 00000000000..33a1eb883ce --- /dev/null +++ b/api/api-collect/collect-internal/src/main/java/fr/gouv/vitamui/collect/internal/server/service/ExternalParametersService.java @@ -0,0 +1,90 @@ +/* + * Copyright French Prime minister Office/SGMAP/DINSIC/Vitam Program (2015-2022) + * + * contact.vitam@culture.gouv.fr + * + * This software is a computer program whose purpose is to implement a digital archiving back-office system managing + * high volumetry securely and efficiently. + * + * This software is governed by the CeCILL 2.1 license under French law and abiding by the rules of distribution of free + * software. You can use, modify and/ or redistribute the software under the terms of the CeCILL 2.1 license as + * circulated by CEA, CNRS and INRIA at the following URL "https://cecill.info". + * + * As a counterpart to the access to the source code and rights to copy, modify and redistribute granted by the license, + * users are provided only with a limited warranty and the software's author, the holder of the economic rights, and the + * successive licensors have only limited liability. + * + * In this respect, the user's attention is drawn to the risks associated with loading, using, modifying and/or + * developing or reproducing the software by the user in light of its specific status of free software, that may mean + * that it is complicated to manipulate, and that also therefore means that it is reserved for developers and + * experienced professionals having in-depth computer knowledge. Users are therefore encouraged to load and test the + * software's suitability as regards their requirements in conditions enabling the security of their systems and/or data + * to be ensured and, more generally, to use and operate it in the same conditions as regards security. + * + * The fact that you are presently reading this means that you have had knowledge of the CeCILL 2.1 license and that you + * accept its terms. + */ + +package fr.gouv.vitamui.collect.internal.server.service; + +import fr.gouv.vitam.common.client.VitamContext; +import fr.gouv.vitamui.commons.api.domain.ExternalParametersDto; +import fr.gouv.vitamui.commons.api.domain.ParameterDto; +import fr.gouv.vitamui.iam.internal.client.ExternalParametersInternalRestClient; +import fr.gouv.vitamui.iam.security.service.InternalSecurityService; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Objects; + +/** + * The service to retrieve profile thresholds. + */ +@Service +public class ExternalParametersService { + public static final String PARAM_ACCESS_CONTRACT_NAME = "PARAM_ACCESS_CONTRACT"; + + private final ExternalParametersInternalRestClient externalParametersInternalRestClient; + private final InternalSecurityService securityService; + + @Autowired + public ExternalParametersService(final ExternalParametersInternalRestClient externalParametersInternalRestClient, + final InternalSecurityService securityService) { + this.externalParametersInternalRestClient = externalParametersInternalRestClient; + this.securityService = securityService; + } + + /** + * Service to return the access contract defined on profil using external parameters + * + * @return access contract throws IllegalArgumentException + */ + public String retrieveAccessContractFromExternalParam() { + ExternalParametersDto myExternalParameter = + externalParametersInternalRestClient.getMyExternalParameters(securityService.getHttpContext()); + if (myExternalParameter == null || CollectionUtils.isEmpty(myExternalParameter.getParameters())) { + throw new IllegalArgumentException("No external profile defined for access contract defined"); + } + + ParameterDto parameterAccessContract = myExternalParameter.getParameters().stream().filter( + parameter -> PARAM_ACCESS_CONTRACT_NAME + .equals(parameter.getKey())) + .findFirst().orElse(null); + if (Objects.isNull(parameterAccessContract) || Objects.isNull(parameterAccessContract.getValue())) { + throw new IllegalArgumentException("No access contract defined"); + } + return parameterAccessContract.getValue(); + } + + /** + * This function create a VitamContext + * + * @return + */ + public VitamContext buildVitamContextFromExternalParam() { + return new VitamContext(securityService.getTenantIdentifier()).setAccessContract( + retrieveAccessContractFromExternalParam()) + .setApplicationSessionId(securityService.getApplicationId()); + } +} diff --git a/api/api-collect/collect-internal/src/main/java/fr/gouv/vitamui/collect/internal/server/service/ProjectInternalService.java b/api/api-collect/collect-internal/src/main/java/fr/gouv/vitamui/collect/internal/server/service/ProjectInternalService.java index d238501c2a1..5cb66b5dc0d 100644 --- a/api/api-collect/collect-internal/src/main/java/fr/gouv/vitamui/collect/internal/server/service/ProjectInternalService.java +++ b/api/api-collect/collect-internal/src/main/java/fr/gouv/vitamui/collect/internal/server/service/ProjectInternalService.java @@ -81,7 +81,7 @@ public ProjectInternalService(CollectService collectService, ObjectMapper object this.objectMapper = objectMapper; } - public CollectProjectDto createProject(VitamContext vitamContext, CollectProjectDto collectProjectDto) { + public CollectProjectDto createProject(CollectProjectDto collectProjectDto, VitamContext vitamContext) { LOGGER.debug("CollectProjectDto: {}", collectProjectDto); try { ProjectDto projectDto = ProjectConverter.toVitamProjectDto(collectProjectDto); @@ -101,8 +101,8 @@ public CollectProjectDto createProject(VitamContext vitamContext, CollectProject } } - public CollectTransactionDto createTransactionForProject(VitamContext vitamContext, - CollectTransactionDto collectTransactionDto, String projectId) { + public CollectTransactionDto createTransactionForProject( + CollectTransactionDto collectTransactionDto, String projectId, VitamContext vitamContext) { LOGGER.debug("CollectTransactionDto: ", collectTransactionDto); try { SanityChecker.checkSecureParameter(projectId); @@ -125,9 +125,9 @@ public CollectTransactionDto createTransactionForProject(VitamContext vitamConte } } - public PaginatedValuesDto getAllProjectsPaginated(VitamContext vitamContext, Integer page, - Integer size, - Optional orderBy, Optional direction, Optional criteria) { + public PaginatedValuesDto getAllProjectsPaginated(Integer page, + Integer size, Optional orderBy, Optional direction, Optional criteria, + VitamContext vitamContext) { LOGGER.debug("Page: ", page); LOGGER.debug("Size: ", size); LOGGER.debug("OrderBy: ", orderBy.orElse(null)); @@ -164,8 +164,8 @@ public PaginatedValuesDto getAllProjectsPaginated(VitamContex } } - public void streamingUpload(VitamContext vitamContext, InputStream inputStream, String transactionId, - String originalFileName) { + public void streamingUpload(InputStream inputStream, String transactionId, + String originalFileName, VitamContext vitamContext) { LOGGER.debug("TransactionId: ", transactionId); LOGGER.debug("OriginalFileName: ", originalFileName); try { @@ -176,7 +176,7 @@ public void streamingUpload(VitamContext vitamContext, InputStream inputStream, } } - public CollectProjectDto update(VitamContext vitamContext, String id, CollectProjectDto collectProjectDto) { + public CollectProjectDto update(String id, CollectProjectDto collectProjectDto, VitamContext vitamContext) { LOGGER.debug("Id: ", id); LOGGER.debug("CollectProjectDto: ", collectProjectDto); try { diff --git a/api/api-collect/collect-internal/src/main/java/fr/gouv/vitamui/collect/internal/server/service/TransactionInternalService.java b/api/api-collect/collect-internal/src/main/java/fr/gouv/vitamui/collect/internal/server/service/TransactionInternalService.java index 39f910d9b44..e0967a6dce7 100644 --- a/api/api-collect/collect-internal/src/main/java/fr/gouv/vitamui/collect/internal/server/service/TransactionInternalService.java +++ b/api/api-collect/collect-internal/src/main/java/fr/gouv/vitamui/collect/internal/server/service/TransactionInternalService.java @@ -152,7 +152,7 @@ public CollectTransactionDto updateTransaction(CollectTransactionDto collectTran } } - public String updateArchiveUnitsFromFile(VitamContext vitamContext, InputStream inputStream, String transactionId) + public String updateArchiveUnitsFromFile(InputStream inputStream, String transactionId, VitamContext vitamContext) throws RequestTimeOutException { LOGGER.debug("[Internal] call update Archive Units From File for transaction Id {} ", transactionId); final String result = collectService.updateCollectArchiveUnits(vitamContext, transactionId, inputStream); diff --git a/api/api-collect/collect-internal/src/test/java/fr/gouv/vitamui/collect/internal/server/service/ExternalParametersServiceTest.java b/api/api-collect/collect-internal/src/test/java/fr/gouv/vitamui/collect/internal/server/service/ExternalParametersServiceTest.java new file mode 100644 index 00000000000..e00a1c25363 --- /dev/null +++ b/api/api-collect/collect-internal/src/test/java/fr/gouv/vitamui/collect/internal/server/service/ExternalParametersServiceTest.java @@ -0,0 +1,134 @@ +/* + * + * * Copyright French Prime minister Office/SGMAP/DINSIC/Vitam Program (2015-2022) + * * + * * contact.vitam@culture.gouv.fr + * * + * * This software is a computer program whose purpose is to implement a digital archiving back-office system managing + * * high volumetry securely and efficiently. + * * + * * This software is governed by the CeCILL 2.1 license under French law and abiding by the rules of distribution of free + * * software. You can use, modify and/ or redistribute the software under the terms of the CeCILL 2.1 license as + * * circulated by CEA, CNRS and INRIA at the following URL "https://cecill.info". + * * + * * As a counterpart to the access to the source code and rights to copy, modify and redistribute granted by the license, + * * users are provided only with a limited warranty and the software's author, the holder of the economic rights, and the + * * successive licensors have only limited liability. + * * + * * In this respect, the user's attention is drawn to the risks associated with loading, using, modifying and/or + * * developing or reproducing the software by the user in light of its specific status of free software, that may mean + * * that it is complicated to manipulate, and that also therefore means that it is reserved for developers and + * * experienced professionals having in-depth computer knowledge. Users are therefore encouraged to load and test the + * * software's suitability as regards their requirements in conditions enabling the security of their systems and/or data + * * to be ensured and, more generally, to use and operate it in the same conditions as regards security. + * * + * * The fact that you are presently reading this means that you have had knowledge of the CeCILL 2.1 license and that you + * * accept its terms. + * + */ + +package fr.gouv.vitamui.collect.internal.server.service; + +import fr.gouv.vitam.common.client.VitamContext; +import fr.gouv.vitamui.commons.api.domain.ExternalParametersDto; +import fr.gouv.vitamui.commons.api.domain.ParameterDto; +import fr.gouv.vitamui.commons.test.utils.ServerIdentityConfigurationBuilder; +import fr.gouv.vitamui.iam.internal.client.ExternalParametersInternalRestClient; +import fr.gouv.vitamui.iam.security.service.InternalSecurityService; +import org.assertj.core.util.Lists; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mockito; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.test.context.junit.jupiter.SpringExtension; + +import java.util.List; + +@ExtendWith(SpringExtension.class) +public class ExternalParametersServiceTest { + + public static final String SOME_ACCESS_CONTRACT = "SOME_ACCESS_CONTRACT"; + public static final int SOME_TENANT = 1; + @MockBean(name = "exteralParametersInternalRestClient") + private ExternalParametersInternalRestClient exteralParametersInternalRestClient; + + @MockBean(name = "securityService") + private InternalSecurityService securityService; + + + @InjectMocks + private ExternalParametersService externalParametersService; + + + @BeforeEach + public void setUp() { + ServerIdentityConfigurationBuilder.setup("identityName", "identityRole", 1, 0); + externalParametersService = + new ExternalParametersService(exteralParametersInternalRestClient, securityService); + } + + @Test + void shouldThrowIllegalArgumentExceptionWhenNoAccessContract() { + ExternalParametersDto myExternalParameter = new ExternalParametersDto(); + ParameterDto parameterDto = new ParameterDto(); + parameterDto.setValue("ANY_VALUE"); + parameterDto.setKey("ANY_PARAM"); + myExternalParameter.setParameters(List.of(parameterDto)); + Mockito.when(exteralParametersInternalRestClient.getMyExternalParameters(securityService.getHttpContext())) + .thenReturn(myExternalParameter); + + IllegalArgumentException thrown = Assertions.assertThrows(IllegalArgumentException.class, () -> { + externalParametersService.retrieveAccessContractFromExternalParam(); + }); + + Assertions.assertEquals("No access contract defined", thrown.getMessage()); + } + + @Test + void shouldThrowAnotherIllegalArgumentExceptionWhenNoAccessContract() { + ExternalParametersDto myExternalParameter = new ExternalParametersDto(); + myExternalParameter.setParameters(Lists.emptyList()); + Mockito.when(exteralParametersInternalRestClient.getMyExternalParameters(securityService.getHttpContext())) + .thenReturn(myExternalParameter); + + IllegalArgumentException thrown = Assertions.assertThrows(IllegalArgumentException.class, () -> { + externalParametersService.retrieveAccessContractFromExternalParam(); + }); + + Assertions.assertEquals("No external profile defined for access contract defined", thrown.getMessage()); + } + + @Test + void shouldRetrieveTheRightAccessContractWhenDefiend() { + ExternalParametersDto myExternalParameter = new ExternalParametersDto(); + ParameterDto parameterDto = new ParameterDto(); + parameterDto.setValue(SOME_ACCESS_CONTRACT); + parameterDto.setKey(ExternalParametersService.PARAM_ACCESS_CONTRACT_NAME); + myExternalParameter.setParameters(List.of(parameterDto)); + Mockito.when(exteralParametersInternalRestClient.getMyExternalParameters(securityService.getHttpContext())) + .thenReturn(myExternalParameter); + + String accessContractFound = externalParametersService.retrieveAccessContractFromExternalParam(); + Assertions.assertEquals(SOME_ACCESS_CONTRACT, accessContractFound); + } + + @Test + void shouldRetrieveTheRightAccessContractFromContextWhenDefiend() { + ExternalParametersDto myExternalParameter = new ExternalParametersDto(); + ParameterDto parameterDto = new ParameterDto(); + parameterDto.setValue(SOME_ACCESS_CONTRACT); + parameterDto.setKey(ExternalParametersService.PARAM_ACCESS_CONTRACT_NAME); + myExternalParameter.setParameters(List.of(parameterDto)); + + Mockito.when(exteralParametersInternalRestClient.getMyExternalParameters(securityService.getHttpContext())) + .thenReturn(myExternalParameter); + Mockito.when(securityService.getTenantIdentifier()) + .thenReturn(SOME_TENANT); + VitamContext someContext = new VitamContext(SOME_TENANT).setAccessContract(SOME_ACCESS_CONTRACT); + VitamContext context = externalParametersService.buildVitamContextFromExternalParam(); + Assertions.assertEquals(someContext, context); + } +} diff --git a/api/api-collect/collect-internal/src/test/java/fr/gouv/vitamui/collect/internal/server/service/ProjectInternalServiceTest.java b/api/api-collect/collect-internal/src/test/java/fr/gouv/vitamui/collect/internal/server/service/ProjectInternalServiceTest.java index 9b97001f939..23538217642 100644 --- a/api/api-collect/collect-internal/src/test/java/fr/gouv/vitamui/collect/internal/server/service/ProjectInternalServiceTest.java +++ b/api/api-collect/collect-internal/src/test/java/fr/gouv/vitamui/collect/internal/server/service/ProjectInternalServiceTest.java @@ -106,7 +106,7 @@ void shouldCreateProjectWithSuccess() throws VitamClientException, JsonProcessin // WHEN CollectProjectDto resultedProject = - projectInternalService.createProject((vitamContext), ProjectConverter.toVitamuiCollectProjectDto(projectDto)); + projectInternalService.createProject(ProjectConverter.toVitamuiCollectProjectDto(projectDto), vitamContext); // THEN assertNotNull(resultedProject); @@ -137,7 +137,7 @@ public Response toResponse() { // WHEN assertThrows(InternalServerException.class, () -> { - projectInternalService.createProject(vitamContext, ProjectConverter.toVitamuiCollectProjectDto(projectDto)); + projectInternalService.createProject(ProjectConverter.toVitamuiCollectProjectDto(projectDto), vitamContext); }); } @@ -158,8 +158,8 @@ void shouldCreateTransactiontWithSuccess() throws VitamClientException, JsonProc // WHEN CollectTransactionDto resultedTransaction = - projectInternalService.createTransactionForProject(vitamContext, - TransactionConverter.toVitamUiDto(transactionDto), PROJECT_ID); + projectInternalService.createTransactionForProject( + TransactionConverter.toVitamUiDto(transactionDto), PROJECT_ID, vitamContext); // THEN assertNotNull(resultedTransaction); @@ -188,8 +188,8 @@ public Response toResponse() { // WHEN assertThrows(InternalServerException.class, () -> - projectInternalService.createTransactionForProject(vitamContext, - TransactionConverter.toVitamUiDto(transactionDto), PROJECT_ID) + projectInternalService.createTransactionForProject( + TransactionConverter.toVitamUiDto(transactionDto), PROJECT_ID, vitamContext) ); } @@ -210,8 +210,8 @@ void shouldGetAllPaginatedProjectsWithoutCrietria() throws VitamClientException, // WHEN PaginatedValuesDto paginatedProjects = - projectInternalService.getAllProjectsPaginated(vitamContext, 1, 1, Optional.empty(), - Optional.empty(), Optional.empty()); + projectInternalService.getAllProjectsPaginated(1, 1, Optional.empty(), + Optional.empty(), Optional.empty(), vitamContext); // THEN assertNotNull(paginatedProjects); @@ -237,8 +237,8 @@ void shouldGetAllPaginatedProjectsWithCrietria() // WHEN PaginatedValuesDto paginatedProjects = - projectInternalService.getAllProjectsPaginated(vitamContext, 1, 1, Optional.empty(), - Optional.empty(), Optional.of(JsonHandler.writeAsString(criteriaNode))); + projectInternalService.getAllProjectsPaginated(1, 1, Optional.empty(), + Optional.empty(), Optional.of(JsonHandler.writeAsString(criteriaNode)), vitamContext); // THEN assertNotNull(paginatedProjects); @@ -261,8 +261,8 @@ public Response toResponse() { // WHEN assertThrows(InternalServerException.class, () -> - projectInternalService.getAllProjectsPaginated(vitamContext, 1, 1, Optional.empty(), - Optional.empty(), Optional.empty()) + projectInternalService.getAllProjectsPaginated(1, 1, Optional.empty(), + Optional.empty(), Optional.empty(), vitamContext) ); } @@ -276,8 +276,8 @@ void shouldStreamUploadWithSuccess() throws VitamClientException { // THEN assertDoesNotThrow(() -> - projectInternalService.streamingUpload(vitamContext, csvFileInputStream, "FAKE_TRANSACTION_ID", - "FAKE_VALUE")); + projectInternalService.streamingUpload(csvFileInputStream, "FAKE_TRANSACTION_ID", + "FAKE_VALUE", vitamContext)); } @Test @@ -290,8 +290,8 @@ void shouldThrowExceptionWhenStreamUpload() throws VitamClientException { // THEN assertThrows(InternalServerException.class, () -> - projectInternalService.streamingUpload(vitamContext, csvFileInputStream, "FAKE_TRANSACTION_ID", - "FAKE_VALUE")); + projectInternalService.streamingUpload(csvFileInputStream, "FAKE_TRANSACTION_ID", + "FAKE_VALUE", vitamContext)); } @Test @@ -310,8 +310,8 @@ void shouldUpdateProjectWithSuccess() throws VitamClientException, JsonProcessin .thenReturn(mockResponse); // WHEN - CollectProjectDto updatedProject = projectInternalService.update(vitamContext, PROJECT_ID, - ProjectConverter.toVitamuiCollectProjectDto(projectDto)); + CollectProjectDto updatedProject = projectInternalService.update(PROJECT_ID, + ProjectConverter.toVitamuiCollectProjectDto(projectDto), vitamContext); // THEN assertNotNull(updatedProject); @@ -339,8 +339,8 @@ public Response toResponse() { .thenReturn(mockResponse); // THEN - assertThrows(InternalServerException.class, () -> projectInternalService.update(vitamContext, PROJECT_ID, - ProjectConverter.toVitamuiCollectProjectDto(projectDto))); + assertThrows(InternalServerException.class, () -> projectInternalService.update(PROJECT_ID, + ProjectConverter.toVitamuiCollectProjectDto(projectDto), vitamContext)); } @Test diff --git a/api/api-collect/collect-internal/src/test/java/fr/gouv/vitamui/collect/internal/server/service/TransactionInternalServiceTest.java b/api/api-collect/collect-internal/src/test/java/fr/gouv/vitamui/collect/internal/server/service/TransactionInternalServiceTest.java index 2929d62fec0..8beed111b2f 100644 --- a/api/api-collect/collect-internal/src/test/java/fr/gouv/vitamui/collect/internal/server/service/TransactionInternalServiceTest.java +++ b/api/api-collect/collect-internal/src/test/java/fr/gouv/vitamui/collect/internal/server/service/TransactionInternalServiceTest.java @@ -243,7 +243,7 @@ void shouldUpdateArchiveUnitsFromFileWithSuccess() throws InvalidParseOperationE .thenReturn("BELIEVE ME, I AM 200"); // WHEN String resultedOperation = - transactionInternalService.updateArchiveUnitsFromFile(vitamContext, csvContent, TRANSACTION_ID); + transactionInternalService.updateArchiveUnitsFromFile(csvContent, TRANSACTION_ID, vitamContext); // THEN assertNotNull(resultedOperation); } diff --git a/api/api-collect/collect-internal/src/test/java/fr/gouv/vitamui/collect/internal/server/service/UpdateArchiveUnitsMetadataInternalServiceTest.java b/api/api-collect/collect-internal/src/test/java/fr/gouv/vitamui/collect/internal/server/service/UpdateArchiveUnitsMetadataInternalServiceTest.java index 6d75a8f3895..74b96a2e368 100644 --- a/api/api-collect/collect-internal/src/test/java/fr/gouv/vitamui/collect/internal/server/service/UpdateArchiveUnitsMetadataInternalServiceTest.java +++ b/api/api-collect/collect-internal/src/test/java/fr/gouv/vitamui/collect/internal/server/service/UpdateArchiveUnitsMetadataInternalServiceTest.java @@ -77,8 +77,10 @@ void updateCollectArchiveUnits_should_pass_when_Vitam_Return_Ok() { //When // TODO : do not mix raw values and Matchers ! - Mockito.when(collectService.updateCollectArchiveUnits(eq(vitamContext), eq(transactionId), any())).thenReturn(vitamResponse); - String response = transactionInternalService.updateArchiveUnitsFromFile(vitamContext, csvFileInputStream, transactionId); + Mockito.when(collectService.updateCollectArchiveUnits(eq(vitamContext), eq(transactionId), any())) + .thenReturn(vitamResponse); + String response = + transactionInternalService.updateArchiveUnitsFromFile(csvFileInputStream, transactionId, vitamContext); //Then assertThat(response).isEqualTo(vitamResponse); @@ -95,10 +97,12 @@ void updateCollectArchiveUnits_should_not_pass_when_Vitam_throw_exception() { .getResourceAsStream("data/updateCollectArchiveUnits/wrong_collect_metadata.csv"); //When - Mockito.when(collectService.updateCollectArchiveUnits(eq(vitamContext), eq(transactionId), any())).thenReturn(vitamResponse); + Mockito.when(collectService.updateCollectArchiveUnits(eq(vitamContext), eq(transactionId), any())) + .thenReturn(vitamResponse); //Then - assertThatCode(() -> transactionInternalService.updateArchiveUnitsFromFile(vitamContext, csvFileInputStream, transactionId)). + assertThatCode(() -> transactionInternalService.updateArchiveUnitsFromFile(csvFileInputStream, + transactionId, vitamContext)). isInstanceOf(RequestTimeOutException.class); } diff --git a/api/api-ingest/ingest-internal/pom.xml b/api/api-ingest/ingest-internal/pom.xml index cdc26d1024a..80193de8fe6 100644 --- a/api/api-ingest/ingest-internal/pom.xml +++ b/api/api-ingest/ingest-internal/pom.xml @@ -173,11 +173,6 @@ spring-boot-starter-test test - - fr.gouv.vitamui - iam-external-client - test - de.flapdoodle.embed de.flapdoodle.embed.mongo diff --git a/api/api-ingest/ingest-internal/src/main/java/fr/gouv/vitamui/ingest/internal/server/config/ApiIngestInternalServerConfig.java b/api/api-ingest/ingest-internal/src/main/java/fr/gouv/vitamui/ingest/internal/server/config/ApiIngestInternalServerConfig.java index 33eb0ae8933..f268ac6f2e9 100644 --- a/api/api-ingest/ingest-internal/src/main/java/fr/gouv/vitamui/ingest/internal/server/config/ApiIngestInternalServerConfig.java +++ b/api/api-ingest/ingest-internal/src/main/java/fr/gouv/vitamui/ingest/internal/server/config/ApiIngestInternalServerConfig.java @@ -53,7 +53,6 @@ import fr.gouv.vitamui.iam.internal.client.IamInternalRestClientFactory; import fr.gouv.vitamui.iam.internal.client.UserInternalRestClient; import fr.gouv.vitamui.iam.security.provider.InternalApiAuthenticationProvider; -import fr.gouv.vitamui.iam.security.service.ExternalSecurityService; import fr.gouv.vitamui.iam.security.service.InternalAuthentificationService; import fr.gouv.vitamui.iam.security.service.InternalSecurityService; import fr.gouv.vitamui.ingest.internal.server.security.WebSecurityConfig; @@ -136,11 +135,6 @@ public IngestGeneratorODTFile ingestGeneratorODTFile() { return new IngestGeneratorODTFile(); } - @Bean - ExternalSecurityService externalSecurityService() { - return new ExternalSecurityService(); - } - @Bean public ExternalParametersInternalRestClient externalParametersInternalRestClient( final IamInternalRestClientFactory iamInternalRestClientFactory) { diff --git a/api/api-ingest/ingest-internal/src/main/java/fr/gouv/vitamui/ingest/internal/server/service/IngestExternalParametersService.java b/api/api-ingest/ingest-internal/src/main/java/fr/gouv/vitamui/ingest/internal/server/service/IngestExternalParametersService.java index 74d2031c5d4..556f91ed077 100644 --- a/api/api-ingest/ingest-internal/src/main/java/fr/gouv/vitamui/ingest/internal/server/service/IngestExternalParametersService.java +++ b/api/api-ingest/ingest-internal/src/main/java/fr/gouv/vitamui/ingest/internal/server/service/IngestExternalParametersService.java @@ -28,15 +28,9 @@ package fr.gouv.vitamui.ingest.internal.server.service; import fr.gouv.vitamui.commons.api.domain.ExternalParametersDto; -import fr.gouv.vitamui.commons.api.domain.IdDto; import fr.gouv.vitamui.commons.api.domain.ParameterDto; -import fr.gouv.vitamui.commons.api.logger.VitamUILogger; -import fr.gouv.vitamui.commons.api.logger.VitamUILoggerFactory; -import fr.gouv.vitamui.commons.rest.client.BasePaginatingAndSortingRestClient; import fr.gouv.vitamui.commons.rest.client.InternalHttpContext; import fr.gouv.vitamui.iam.internal.client.ExternalParametersInternalRestClient; -import fr.gouv.vitamui.iam.security.client.AbstractResourceClientService; -import fr.gouv.vitamui.iam.security.service.ExternalSecurityService; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -44,20 +38,17 @@ import java.util.Optional; /** - * The service to retrieve profil thresholds. + * The service to retrieve profile thresholds. */ @Service -public class IngestExternalParametersService extends AbstractResourceClientService { - private static final VitamUILogger LOGGER = - VitamUILoggerFactory.getInstance(IngestExternalParametersService.class); +public class IngestExternalParametersService { public static final String PARAM_ACCESS_CONTRACT_NAME = "PARAM_ACCESS_CONTRACT"; @Autowired private final ExternalParametersInternalRestClient externalParametersInternalRestClient; - public IngestExternalParametersService(final ExternalSecurityService externalSecurityService, + public IngestExternalParametersService( final ExternalParametersInternalRestClient externalParametersInternalRestClient) { - super(externalSecurityService); this.externalParametersInternalRestClient = externalParametersInternalRestClient; } @@ -82,9 +73,4 @@ public Optional retrieveProfilAccessContract(InternalHttpContext interna } return accessContractOpt; } - - @Override - protected BasePaginatingAndSortingRestClient getClient() { - return null; - } } diff --git a/api/api-pastis/pastis-client/src/main/java/fr/gouv/vitamui/pastis/client/PastisTransformationRestClient.java b/api/api-pastis/pastis-client/src/main/java/fr/gouv/vitamui/pastis/client/PastisTransformationRestClient.java index 8875d80fe61..5b3de4bda1e 100644 --- a/api/api-pastis/pastis-client/src/main/java/fr/gouv/vitamui/pastis/client/PastisTransformationRestClient.java +++ b/api/api-pastis/pastis-client/src/main/java/fr/gouv/vitamui/pastis/client/PastisTransformationRestClient.java @@ -90,39 +90,35 @@ public String getPathUrl() { return RestApi.PASTIS; } - public ResponseEntity loadProfile(Notice notice, ExternalHttpContext context) - { + public ResponseEntity loadProfile(Notice notice, ExternalHttpContext context) { LOGGER.debug("Transform profile"); - MultiValueMap headers = buildSearchHeaders(context); + MultiValueMap headers = buildHeaders(context); final HttpEntity request = new HttpEntity<>(notice, headers); return restTemplate.exchange(getUrl() + RestApi.PASTIS_TRANSFORM_PROFILE, HttpMethod.POST, - request, ProfileResponse.class); + request, ProfileResponse.class); } - public ResponseEntity getArchiveProfile(final ElementProperties json, ExternalHttpContext context) - { + public ResponseEntity getArchiveProfile(final ElementProperties json, ExternalHttpContext context) { LOGGER.debug("Download archive profile"); - MultiValueMap headers = buildSearchHeaders(context); + MultiValueMap headers = buildHeaders(context); final HttpEntity request = new HttpEntity<>(json, headers); - return restTemplate.exchange(getUrl() + RestApi.PASTIS_DOWNLOAD_PA, HttpMethod.POST, - request, String.class); + return restTemplate.exchange(getUrl() + RestApi.PASTIS_DOWNLOAD_PA, HttpMethod.POST, + request, String.class); } - public ResponseEntity getArchiveUnitProfile(final ProfileNotice json, ExternalHttpContext context) - { + public ResponseEntity getArchiveUnitProfile(final ProfileNotice json, ExternalHttpContext context) { LOGGER.debug("Download Arichivale unit profile"); MultiValueMap headers = buildSearchHeaders(context); final HttpEntity request = new HttpEntity<>(json, headers); - return restTemplate.exchange(getUrl() + RestApi.PASTIS_DOWNLOAD_PUA, HttpMethod.POST, - request, String.class); + return restTemplate.exchange(getUrl() + RestApi.PASTIS_DOWNLOAD_PUA, HttpMethod.POST, + request, String.class); } - public ResponseEntity createProfile(String profileType, ExternalHttpContext context) - { + public ResponseEntity createProfile(String profileType, ExternalHttpContext context) { LOGGER.debug("Transform profile"); MultiValueMap headers = buildSearchHeaders(context); final HttpEntity request = new HttpEntity<>(headers); - return restTemplate.exchange(getUrl() + RestApi.PASTIS_CREATE_PROFILE + "?type=" + profileType, HttpMethod.GET, - request, ProfileResponse.class); + return restTemplate.exchange(getUrl() + RestApi.PASTIS_CREATE_PROFILE + "?type=" + profileType, HttpMethod.GET, + request, ProfileResponse.class); } } diff --git a/api/api-referential/referential-external-client/src/main/java/fr/gouv/vitamui/referential/external/client/AccessionRegisterDetailExternalRestClient.java b/api/api-referential/referential-external-client/src/main/java/fr/gouv/vitamui/referential/external/client/AccessionRegisterDetailExternalRestClient.java index 3c0414b0681..2bc20c9908d 100644 --- a/api/api-referential/referential-external-client/src/main/java/fr/gouv/vitamui/referential/external/client/AccessionRegisterDetailExternalRestClient.java +++ b/api/api-referential/referential-external-client/src/main/java/fr/gouv/vitamui/referential/external/client/AccessionRegisterDetailExternalRestClient.java @@ -86,11 +86,11 @@ protected ParameterizedTypeReference> getDtoLis } public ResponseEntity exportAccessionRegisterCsv(AccessionRegisterSearchDto query, - ExternalHttpContext context) { + ExternalHttpContext context) { LOGGER.debug("Accession register details csv export"); - MultiValueMap headers = buildSearchHeaders(context); + MultiValueMap headers = buildHeaders(context); final HttpEntity request = new HttpEntity<>(query, headers); return restTemplate.exchange(getUrl() + RestApi.EXPORT_CSV, HttpMethod.POST, - request, Resource.class); + request, Resource.class); } } diff --git a/api/api-referential/referential-internal-client/src/main/java/fr/gouv/vitamui/referential/internal/client/AccessionRegisterDetailInternalRestClient.java b/api/api-referential/referential-internal-client/src/main/java/fr/gouv/vitamui/referential/internal/client/AccessionRegisterDetailInternalRestClient.java index 0eb13ac8d8b..082ee4379e4 100644 --- a/api/api-referential/referential-internal-client/src/main/java/fr/gouv/vitamui/referential/internal/client/AccessionRegisterDetailInternalRestClient.java +++ b/api/api-referential/referential-internal-client/src/main/java/fr/gouv/vitamui/referential/internal/client/AccessionRegisterDetailInternalRestClient.java @@ -88,7 +88,7 @@ protected ParameterizedTypeReference> getDtoLis public Resource exportAccessionRegisterCsv(final AccessionRegisterSearchDto query, final InternalHttpContext context) { LOGGER.debug("Calling exportAccessionRegisterCsv with query {} ", query); - MultiValueMap headers = buildSearchHeaders(context); + MultiValueMap headers = buildHeaders(context); final HttpEntity request = new HttpEntity<>(query, headers); final ResponseEntity response = restTemplate.exchange(getUrl() + RestApi.EXPORT_CSV, HttpMethod.POST, request, Resource.class); diff --git a/commons/commons-api/src/main/java/fr/gouv/vitamui/commons/api/dtos/SearchCriteriaDto.java b/commons/commons-api/src/main/java/fr/gouv/vitamui/commons/api/dtos/SearchCriteriaDto.java index 224024717de..7d3880165dd 100644 --- a/commons/commons-api/src/main/java/fr/gouv/vitamui/commons/api/dtos/SearchCriteriaDto.java +++ b/commons/commons-api/src/main/java/fr/gouv/vitamui/commons/api/dtos/SearchCriteriaDto.java @@ -45,8 +45,7 @@ @Setter @Getter @NoArgsConstructor -public class -SearchCriteriaDto implements Serializable { +public class SearchCriteriaDto implements Serializable { /** * Criteria list for searching archive units */ diff --git a/commons/commons-rest/src/main/java/fr/gouv/vitamui/commons/rest/client/BasePaginatingAndSortingRestClient.java b/commons/commons-rest/src/main/java/fr/gouv/vitamui/commons/rest/client/BasePaginatingAndSortingRestClient.java index 263d6e9e196..e536c54f818 100644 --- a/commons/commons-rest/src/main/java/fr/gouv/vitamui/commons/rest/client/BasePaginatingAndSortingRestClient.java +++ b/commons/commons-rest/src/main/java/fr/gouv/vitamui/commons/rest/client/BasePaginatingAndSortingRestClient.java @@ -82,15 +82,19 @@ public PaginatedValuesDto getAllPaginated(final C context, final Integer page } public PaginatedValuesDto getAllPaginated(final URIBuilder builder, final C context, final Integer page, - final Integer size, final Optional criteria, final Optional orderBy, final Optional direction, + final Integer size, final Optional criteria, final Optional orderBy, + final Optional direction, final Optional embedded) { SanityChecker.sanitizeCriteria(criteria); - LOGGER.debug("search page={}, size={}, criteria={}, orderBy={}, direction={}, embedded={}", page, size, criteria, - orderBy, direction, embedded); - return fillOutUriParametersAndReturnResponse(builder, page, size, criteria, orderBy, direction, embedded, context); + LOGGER.debug("search page={}, size={}, criteria={}, orderBy={}, direction={}, embedded={}", page, size, + criteria, + orderBy, direction, embedded); + return fillOutUriParametersAndReturnResponse(builder, page, size, criteria, orderBy, direction, embedded, + context); } - private PaginatedValuesDto fillOutUriParametersAndReturnResponse(URIBuilder builder, Integer page, Integer size, Optional criteria, + private PaginatedValuesDto fillOutUriParametersAndReturnResponse(URIBuilder builder, Integer page, Integer size, + Optional criteria, Optional orderBy, Optional direction, Optional embedded, C context) { builder.addParameter("page", page.toString()); builder.addParameter("size", size.toString()); @@ -113,7 +117,8 @@ public PaginatedValuesDto getAllPaginated(final C context, final Integer page .debug("search page={}, size={}, criteria={}, orderBy={}, direction={}, embedded={}", page, size, criteria, orderBy, direction, embedded); final URIBuilder builder = getUriBuilderFromUrl(); - return fillOutUriParametersAndReturnResponse(builder, page, size, criteria, orderBy, direction, embedded, context); + return fillOutUriParametersAndReturnResponse(builder, page, size, criteria, orderBy, direction, embedded, + context); } public ResultsDto getAllRequest(final C context, final RequestParamDto requestParam) { @@ -127,14 +132,15 @@ public ResultsDto getAllRequest(final C context, final RequestParamDto reques requestParam.getDirection().ifPresent(o -> builder.addParameter("direction", o.toString())); requestParam.getGroups().ifPresent(group -> { - for (var field: group.getFields()) { + for (var field : group.getFields()) { builder.addParameter("fields", field); } builder.addParameter("operator", group.getOperator().name()); }); final HttpEntity request = new HttpEntity<>(buildHeaders(context)); - final var response = restTemplate.exchange(buildUriBuilder(builder), HttpMethod.GET, request, this.getResultDtoClass()); + final var response = + restTemplate.exchange(buildUriBuilder(builder), HttpMethod.GET, request, this.getResultDtoClass()); checkResponse(response); return (ResultsDto) response.getBody(); } @@ -167,7 +173,8 @@ protected MultiValueMap buildSearchHeaders(final InternalHttpCon } return headers; } - protected ParameterizedTypeReference> getResultDtoClass(){ + + protected ParameterizedTypeReference> getResultDtoClass() { return ParameterizedTypeReferenceFactory.createFromInstance(ResultsDto.class, this); } diff --git a/ui/ui-frontend/projects/archive-search/src/app/archive/archive-preview/archive-unit-information-tab/archive-unit-information-tab.component.ts b/ui/ui-frontend/projects/archive-search/src/app/archive/archive-preview/archive-unit-information-tab/archive-unit-information-tab.component.ts index cb4750f4aa8..b220da95be1 100644 --- a/ui/ui-frontend/projects/archive-search/src/app/archive/archive-preview/archive-unit-information-tab/archive-unit-information-tab.component.ts +++ b/ui/ui-frontend/projects/archive-search/src/app/archive/archive-preview/archive-unit-information-tab/archive-unit-information-tab.component.ts @@ -47,15 +47,15 @@ import { TemplateRef, ViewChild } from '@angular/core'; -import {FormBuilder, FormGroup, Validators} from '@angular/forms'; -import {MatDialog} from '@angular/material/dialog'; -import {TranslateService} from '@ngx-translate/core'; -import {Observable, of, Subscription} from 'rxjs'; -import {catchError, filter, map, switchMap} from 'rxjs/operators'; -import {diff, Logger, Option, StartupService, Unit} from 'ui-frontend-common'; -import {extend, isEmpty} from 'underscore'; -import {ArchiveService} from '../../archive.service'; -import {UnitDescriptiveMetadataDto} from '../../models/unitDescriptiveMetadata.interface'; +import { FormBuilder, FormGroup, Validators } from '@angular/forms'; +import { MatDialog } from '@angular/material/dialog'; +import { TranslateService } from '@ngx-translate/core'; +import { Observable, of, Subscription } from 'rxjs'; +import { catchError, filter, map, switchMap } from 'rxjs/operators'; +import { diff, Logger, Option, StartupService, Unit } from 'ui-frontend-common'; +import { extend, isEmpty } from 'underscore'; +import { ArchiveService } from '../../archive.service'; +import { UnitDescriptiveMetadataDto } from '../../models/unitDescriptiveMetadata.interface'; @Component({ selector: 'app-archive-unit-information-tab', @@ -129,7 +129,7 @@ export class ArchiveUnitInformationTabComponent implements OnInit, OnChanges, On ngOnInit() { this.initTitleAndDescriptionsFlagValues(this.archiveUnit); - this.uaPath$ = this.archiveService.buildArchiveUnitPath(this.archiveUnit, this.accessContract); + this.uaPath$ = this.archiveService.buildArchiveUnitPath(this.archiveUnit); this.form = this.formBuilder.group({ title: [null, [Validators.required]], @@ -217,7 +217,7 @@ export class ArchiveUnitInformationTabComponent implements OnInit, OnChanges, On if (changes.archiveUnit?.currentValue['#id']) { this.initTitleAndDescriptionsFlagValues(changes.archiveUnit.currentValue); - this.uaPath$ = this.archiveService.buildArchiveUnitPath(this.archiveUnit, this.accessContract); + this.uaPath$ = this.archiveService.buildArchiveUnitPath(this.archiveUnit); this.form?.reset(); this.previousValue = { title: this.getAuTitle(changes.archiveUnit.currentValue), @@ -424,7 +424,7 @@ export class ArchiveUnitInformationTabComponent implements OnInit, OnChanges, On } updateUnit(archiveUnit: Unit, metadataToUpdate: UnitDescriptiveMetadataDto) { - this.archiveService.updateUnit(archiveUnit['#id'], this.tenantIdentifier, this.accessContract, metadataToUpdate).subscribe( + this.archiveService.updateUnit(archiveUnit['#id'], this.tenantIdentifier, metadataToUpdate).subscribe( (response) => { this.updateStarted = false; this.showNormalPanel.emit(); @@ -504,7 +504,7 @@ export class ArchiveUnitInformationTabComponent implements OnInit, OnChanges, On } onDownloadObjectFromUnit(archiveUnit: Unit) { - return this.archiveService.launchDownloadObjectFromUnit(archiveUnit['#id'], this.tenantIdentifier, this.accessContract); + return this.archiveService.launchDownloadObjectFromUnit(archiveUnit['#id'], this.tenantIdentifier); } showArchiveUniteFullPath() { diff --git a/ui/ui-frontend/projects/archive-search/src/app/archive/archive-preview/archive-unit-objects-details-tab/archive-unit-objects-details-tab.component.spec.ts b/ui/ui-frontend/projects/archive-search/src/app/archive/archive-preview/archive-unit-objects-details-tab/archive-unit-objects-details-tab.component.spec.ts index abb92194dc3..c32cd81bd99 100644 --- a/ui/ui-frontend/projects/archive-search/src/app/archive/archive-preview/archive-unit-objects-details-tab/archive-unit-objects-details-tab.component.spec.ts +++ b/ui/ui-frontend/projects/archive-search/src/app/archive/archive-preview/archive-unit-objects-details-tab/archive-unit-objects-details-tab.component.spec.ts @@ -69,7 +69,6 @@ describe('ArchiveUnitObjectsDetailsTabComponent tests', () => { }; component.archiveUnit = archiveUnit; component.tenantIdentifier = 1; - component.accessContract = 'accessContractTest'; fixture.detectChanges(); }); @@ -90,8 +89,7 @@ describe('ArchiveUnitObjectsDetailsTabComponent tests', () => { component.onClickDownloadObject(event, newVersionWithQualifier(ObjectQualifierType.BINARYMASTER, 1)); expect(archiveServiceSpy.launchDownloadObjectFromUnit).toHaveBeenCalledWith( 'archiveUnitTestID', - 1, - 'accessContractTest', + 1, ObjectQualifierType.BINARYMASTER, 1 ); diff --git a/ui/ui-frontend/projects/archive-search/src/app/archive/archive-preview/archive-unit-objects-details-tab/archive-unit-objects-details-tab.component.ts b/ui/ui-frontend/projects/archive-search/src/app/archive/archive-preview/archive-unit-objects-details-tab/archive-unit-objects-details-tab.component.ts index 51faa73435d..38c427149ce 100644 --- a/ui/ui-frontend/projects/archive-search/src/app/archive/archive-preview/archive-unit-objects-details-tab/archive-unit-objects-details-tab.component.ts +++ b/ui/ui-frontend/projects/archive-search/src/app/archive/archive-preview/archive-unit-objects-details-tab/archive-unit-objects-details-tab.component.ts @@ -72,7 +72,6 @@ export class ArchiveUnitObjectsDetailsTabComponent implements OnChanges { return this.archiveService.launchDownloadObjectFromUnit( this.archiveUnit['#id'], this.tenantIdentifier, - this.accessContract, versionWithQualifier.qualifier, versionWithQualifier.version ); diff --git a/ui/ui-frontend/projects/archive-search/src/app/archive/archive-preview/archive-unit-rules-details-tab/archive-unit-rules-details-tab.component.ts b/ui/ui-frontend/projects/archive-search/src/app/archive/archive-preview/archive-unit-rules-details-tab/archive-unit-rules-details-tab.component.ts index 851d204702f..42bf62ec539 100644 --- a/ui/ui-frontend/projects/archive-search/src/app/archive/archive-preview/archive-unit-rules-details-tab/archive-unit-rules-details-tab.component.ts +++ b/ui/ui-frontend/projects/archive-search/src/app/archive/archive-preview/archive-unit-rules-details-tab/archive-unit-rules-details-tab.component.ts @@ -97,7 +97,7 @@ export class ArchiveUnitRulesDetailsTabComponent implements OnInit, OnChanges, O language: this.translateService.currentLang, }; this.selectUnitWithInheritedRulesSubscription = this.archiveSearchService - .selectUnitWithInheritedRules(inheritedRulesCriteriaSearch, this.accessContract) + .selectUnitWithInheritedRules(inheritedRulesCriteriaSearch) .subscribe((response) => { this.archiveUnitRules = response; this.listOfCriteriaSearch = []; diff --git a/ui/ui-frontend/projects/archive-search/src/app/archive/archive-search/additional-actions-search/dip-request-create/dip-request-create.component.ts b/ui/ui-frontend/projects/archive-search/src/app/archive/archive-search/additional-actions-search/dip-request-create/dip-request-create.component.ts index 9353dda3cd2..1ce01079124 100644 --- a/ui/ui-frontend/projects/archive-search/src/app/archive/archive-search/additional-actions-search/dip-request-create/dip-request-create.component.ts +++ b/ui/ui-frontend/projects/archive-search/src/app/archive/archive-search/additional-actions-search/dip-request-create/dip-request-create.component.ts @@ -122,7 +122,7 @@ export class DipRequestCreateComponent implements OnInit, OnDestroy { lifeCycleLogs: this.exportDIPform.get('lifeCycleLogs').value === this.translate.instant('ARCHIVE_SEARCH.DIP.INCLUDE'), }; - this.archiveService.exportDIPService(exportDIPCriteriaList, this.data.accessContract).subscribe( + this.archiveService.exportDIPService(exportDIPCriteriaList).subscribe( (response) => { this.dialogRef.close(true); const serviceUrl = diff --git a/ui/ui-frontend/projects/archive-search/src/app/archive/archive-search/additional-actions-search/management-rules/archive-unit-rules/add-management-rules/add-management-rules.component.ts b/ui/ui-frontend/projects/archive-search/src/app/archive/archive-search/additional-actions-search/management-rules/archive-unit-rules/add-management-rules/add-management-rules.component.ts index 3517a4464af..f448e567e1f 100644 --- a/ui/ui-frontend/projects/archive-search/src/app/archive/archive-search/additional-actions-search/management-rules/archive-unit-rules/add-management-rules/add-management-rules.component.ts +++ b/ui/ui-frontend/projects/archive-search/src/app/archive/archive-search/additional-actions-search/management-rules/archive-unit-rules/add-management-rules/add-management-rules.component.ts @@ -209,7 +209,7 @@ export class AddManagementRulesComponent implements OnInit, OnDestroy { if (this.hasExactCount) { this.searchArchiveUnitsByCriteriaSubscription = this.archiveService - .getTotalTrackHitsByCriteria(this.criteriaSearchDSLQuery.criteriaList, this.accessContract) + .getTotalTrackHitsByCriteria(this.criteriaSearchDSLQuery.criteriaList) .subscribe((resultsNumber) => { this.itemsWithSameRule = resultsNumber.toString(); this.itemsToUpdate = (this.selectedItem - resultsNumber).toString(); @@ -217,7 +217,7 @@ export class AddManagementRulesComponent implements OnInit, OnDestroy { }); } else { this.searchArchiveUnitsByCriteriaSubscription = this.archiveService - .searchArchiveUnitsByCriteria(this.criteriaSearchDSLQuery, this.accessContract) + .searchArchiveUnitsByCriteria(this.criteriaSearchDSLQuery) .subscribe((data) => { this.itemsWithSameRule = data.totalResults.toString(); @@ -272,13 +272,13 @@ export class AddManagementRulesComponent implements OnInit, OnDestroy { if (this.hasExactCount) { this.archiveService - .getTotalTrackHitsByCriteria(this.criteriaSearchDSLQuery.criteriaList, this.accessContract) + .getTotalTrackHitsByCriteria(this.criteriaSearchDSLQuery.criteriaList) .subscribe((resultsNumber) => { this.itemsWithSameRuleAndDate = resultsNumber.toString(); this.isWarningLoading = false; }); } else { - this.archiveService.searchArchiveUnitsByCriteria(this.criteriaSearchDSLQuery, this.accessContract).subscribe((data) => { + this.archiveService.searchArchiveUnitsByCriteria(this.criteriaSearchDSLQuery).subscribe((data) => { this.itemsWithSameRuleAndDate = data.totalResults === ArchiveSearchConstsEnum.RESULTS_MAX_NUMBER ? this.resultNumberToShow : data.totalResults.toString(); }); diff --git a/ui/ui-frontend/projects/archive-search/src/app/archive/archive-search/additional-actions-search/management-rules/archive-unit-rules/delete-unit-rules/delete-unit-rules.component.ts b/ui/ui-frontend/projects/archive-search/src/app/archive/archive-search/additional-actions-search/management-rules/archive-unit-rules/delete-unit-rules/delete-unit-rules.component.ts index bc473277650..01b14951664 100644 --- a/ui/ui-frontend/projects/archive-search/src/app/archive/archive-search/additional-actions-search/management-rules/archive-unit-rules/delete-unit-rules/delete-unit-rules.component.ts +++ b/ui/ui-frontend/projects/archive-search/src/app/archive/archive-search/additional-actions-search/management-rules/archive-unit-rules/delete-unit-rules/delete-unit-rules.component.ts @@ -257,7 +257,7 @@ export class DeleteUnitRulesComponent implements OnInit, OnDestroy { if (this.hasExactCount) { this.searchArchiveUnitsByCriteriaSubscription = this.archiveService - .getTotalTrackHitsByCriteria(this.criteriaSearchDSLQuery.criteriaList, this.accessContract) + .getTotalTrackHitsByCriteria(this.criteriaSearchDSLQuery.criteriaList) .subscribe((resultsNumber) => { this.itemsWithSameRule = resultsNumber.toString(); this.itemsToNotUpdate = (this.selectedItem - resultsNumber).toString(); @@ -265,7 +265,7 @@ export class DeleteUnitRulesComponent implements OnInit, OnDestroy { }); } else { this.searchArchiveUnitsByCriteriaSubscription = this.archiveService - .searchArchiveUnitsByCriteria(this.criteriaSearchDSLQuery, this.accessContract) + .searchArchiveUnitsByCriteria(this.criteriaSearchDSLQuery) .subscribe((data) => { this.itemsWithSameRule = data.totalResults.toString(); this.itemsToNotUpdate = diff --git a/ui/ui-frontend/projects/archive-search/src/app/archive/archive-search/additional-actions-search/management-rules/archive-unit-rules/unlock-category-inheritance/unlock-category-inheritance.component.ts b/ui/ui-frontend/projects/archive-search/src/app/archive/archive-search/additional-actions-search/management-rules/archive-unit-rules/unlock-category-inheritance/unlock-category-inheritance.component.ts index 094f3fec7d0..2a3e9e87b55 100644 --- a/ui/ui-frontend/projects/archive-search/src/app/archive/archive-search/additional-actions-search/management-rules/archive-unit-rules/unlock-category-inheritance/unlock-category-inheritance.component.ts +++ b/ui/ui-frontend/projects/archive-search/src/app/archive/archive-search/additional-actions-search/management-rules/archive-unit-rules/unlock-category-inheritance/unlock-category-inheritance.component.ts @@ -160,7 +160,7 @@ export class UnlockCategoryInheritanceComponent implements OnInit, OnDestroy { if (this.hasExactCount) { this.searchArchiveUnitsByCriteriaSubscription = this.archiveService - .getTotalTrackHitsByCriteria(this.criteriaSearchDSLQuery.criteriaList, this.accessContract) + .getTotalTrackHitsByCriteria(this.criteriaSearchDSLQuery.criteriaList) .subscribe((resultsNumber) => { this.itemsCategoryToUnlock = resultsNumber.toString(); this.itemsToNotUpdate = (this.selectedItem - resultsNumber).toString(); @@ -168,7 +168,7 @@ export class UnlockCategoryInheritanceComponent implements OnInit, OnDestroy { }); } else { this.searchArchiveUnitsByCriteriaSubscription = this.archiveService - .searchArchiveUnitsByCriteria(this.criteriaSearchDSLQuery, this.accessContract) + .searchArchiveUnitsByCriteria(this.criteriaSearchDSLQuery) .subscribe((data) => { this.itemsCategoryToUnlock = data.totalResults.toString(); this.itemsToNotUpdate = diff --git a/ui/ui-frontend/projects/archive-search/src/app/archive/archive-search/additional-actions-search/management-rules/archive-unit-rules/unlock-rules-inheritance/unlock-rules-inheritance.component.ts b/ui/ui-frontend/projects/archive-search/src/app/archive/archive-search/additional-actions-search/management-rules/archive-unit-rules/unlock-rules-inheritance/unlock-rules-inheritance.component.ts index 56bbb423b84..54a088a71b5 100644 --- a/ui/ui-frontend/projects/archive-search/src/app/archive/archive-search/additional-actions-search/management-rules/archive-unit-rules/unlock-rules-inheritance/unlock-rules-inheritance.component.ts +++ b/ui/ui-frontend/projects/archive-search/src/app/archive/archive-search/additional-actions-search/management-rules/archive-unit-rules/unlock-rules-inheritance/unlock-rules-inheritance.component.ts @@ -243,7 +243,7 @@ export class UnlockRulesInheritanceComponent implements OnInit, OnDestroy { if (this.hasExactCount) { this.searchArchiveUnitsByCriteriaSubscription = this.archiveService - .getTotalTrackHitsByCriteria(this.criteriaSearchDSLQuery.criteriaList, this.accessContract) + .getTotalTrackHitsByCriteria(this.criteriaSearchDSLQuery.criteriaList) .subscribe((resultsNumber) => { this.itemsWithSameRule = resultsNumber.toString(); this.itemsToNotUpdate = (this.selectedItem - resultsNumber).toString(); @@ -251,7 +251,7 @@ export class UnlockRulesInheritanceComponent implements OnInit, OnDestroy { }); } else { this.searchArchiveUnitsByCriteriaSubscription = this.archiveService - .searchArchiveUnitsByCriteria(this.criteriaSearchDSLQuery, this.accessContract) + .searchArchiveUnitsByCriteria(this.criteriaSearchDSLQuery) .subscribe((data) => { this.itemsWithSameRule = data.totalResults.toString(); this.itemsToNotUpdate = diff --git a/ui/ui-frontend/projects/archive-search/src/app/archive/archive-search/additional-actions-search/management-rules/archive-unit-rules/update-unit-rules/update-unit-rules.component.ts b/ui/ui-frontend/projects/archive-search/src/app/archive/archive-search/additional-actions-search/management-rules/archive-unit-rules/update-unit-rules/update-unit-rules.component.ts index 932e2cdead6..33a221bb4ec 100644 --- a/ui/ui-frontend/projects/archive-search/src/app/archive/archive-search/additional-actions-search/management-rules/archive-unit-rules/update-unit-rules/update-unit-rules.component.ts +++ b/ui/ui-frontend/projects/archive-search/src/app/archive/archive-search/additional-actions-search/management-rules/archive-unit-rules/update-unit-rules/update-unit-rules.component.ts @@ -401,7 +401,7 @@ export class UpdateUnitRulesComponent implements OnInit, OnDestroy { if (this.hasExactCount) { this.searchArchiveUnitsByCriteriaSubscription = this.archiveService - .getTotalTrackHitsByCriteria(this.criteriaSearchDSLQuery.criteriaList, this.accessContract) + .getTotalTrackHitsByCriteria(this.criteriaSearchDSLQuery.criteriaList) .subscribe((resultsNumber) => { this.itemsWithSameRule = resultsNumber.toString(); this.itemsToUpdate = (this.selectedItem - resultsNumber).toString(); @@ -409,7 +409,7 @@ export class UpdateUnitRulesComponent implements OnInit, OnDestroy { }); } else { this.searchArchiveUnitsByCriteriaSubscription = this.archiveService - .searchArchiveUnitsByCriteria(this.criteriaSearchDSLQuery, this.accessContract) + .searchArchiveUnitsByCriteria(this.criteriaSearchDSLQuery) .subscribe((data) => { this.itemsWithSameRule = data.totalResults.toString(); this.itemsToUpdate = diff --git a/ui/ui-frontend/projects/archive-search/src/app/archive/archive-search/additional-actions-search/management-rules/management-rules.component.ts b/ui/ui-frontend/projects/archive-search/src/app/archive/archive-search/additional-actions-search/management-rules/management-rules.component.ts index 42bf61043a1..f4856ed3aa6 100644 --- a/ui/ui-frontend/projects/archive-search/src/app/archive/archive-search/additional-actions-search/management-rules/management-rules.component.ts +++ b/ui/ui-frontend/projects/archive-search/src/app/archive/archive-search/additional-actions-search/management-rules/management-rules.component.ts @@ -51,7 +51,7 @@ import { RuleActions, RuleActionsEnum, RuleCategoryAction, - RuleSearchCriteriaDto, + RuleSearchCriteriaDto } from '../../../models/ruleAction.interface'; import { SearchCriteriaDto, SearchCriteriaEltDto } from '../../../models/search.criteria'; @@ -664,7 +664,7 @@ export class ManagementRulesComponent implements OnInit, OnChanges, OnDestroy { ruleActions: allRuleActions, }; - this.archiveService.updateUnitsRules(ruleSearchCriteriaDto, this.accessContract).subscribe( + this.archiveService.updateUnitsRules(ruleSearchCriteriaDto).subscribe( (response) => { const ruleActions: ActionsRules[] = []; this.managementRulesSharedDataService.emitRuleActions(ruleActions); diff --git a/ui/ui-frontend/projects/archive-search/src/app/archive/archive-search/additional-actions-search/reclassification/reclassification.component.ts b/ui/ui-frontend/projects/archive-search/src/app/archive/archive-search/additional-actions-search/reclassification/reclassification.component.ts index 2521081e9ef..36480328a3b 100644 --- a/ui/ui-frontend/projects/archive-search/src/app/archive/archive-search/additional-actions-search/reclassification/reclassification.component.ts +++ b/ui/ui-frontend/projects/archive-search/src/app/archive/archive-search/additional-actions-search/reclassification/reclassification.component.ts @@ -41,7 +41,7 @@ import { ArchiveService } from '../../../archive.service'; import { ReclassificationAction, ReclassificationCriteriaDto, - ReclassificationQueryActionType, + ReclassificationQueryActionType } from '../../../models/reclassification-request.interface'; import { PagedResult, SearchCriteriaDto, SearchCriteriaTypeEnum } from '../../../models/search.criteria'; import { ArchiveUnitValidatorService } from '../../../validators/archive-unit-validator.service'; @@ -123,7 +123,7 @@ export class ReclassificationComponent implements OnInit, OnDestroy { null, [ this.archiveUnitValidator.alreadyExistParents(null, this.archiveUnitAllunitup), - this.archiveUnitValidator.existArchiveUnit(this.data.reclassificationCriteria, this.accessContract), + this.archiveUnitValidator.existArchiveUnit(this.data.reclassificationCriteria), ], ], targetAuTitle: [{ value: null, disabled: true }], @@ -131,7 +131,7 @@ export class ReclassificationComponent implements OnInit, OnDestroy { }); if (this.archiveUnitAllunitup.length > 0) { - this.getArchiveUnitParents(this.archiveUnitAllunitup, this.accessContract); + this.getArchiveUnitParents(this.archiveUnitAllunitup); } else { this.hasParents = false; this.isDisabledButton = false; @@ -166,7 +166,7 @@ export class ReclassificationComponent implements OnInit, OnDestroy { pageNumber: 0, size: 1, }; - this.archiveService.searchArchiveUnitsByCriteria(searchCriteria, this.accessContract).subscribe( + this.archiveService.searchArchiveUnitsByCriteria(searchCriteria).subscribe( (pagedResult: PagedResult) => { this.totalChilds = pagedResult.totalResults; this.pendingGetChilds = false; @@ -196,7 +196,7 @@ export class ReclassificationComponent implements OnInit, OnDestroy { }, ]; - this.archiveService.getTotalTrackHitsByCriteria(criteriaSearchList, this.accessContract).subscribe( + this.archiveService.getTotalTrackHitsByCriteria(criteriaSearchList).subscribe( (exactCountResults: number) => { if (exactCountResults !== -1) { this.totalChilds = exactCountResults; @@ -253,7 +253,7 @@ export class ReclassificationComponent implements OnInit, OnDestroy { return this.form.get('allunitupsGuidsFormAttribute') as FormArray; } - getArchiveUnitParents(allunitupsIds: string[], accessContract: string) { + getArchiveUnitParents(allunitupsIds: string[]) { const allunitups = allunitupsIds.map((unitUp) => ({ id: unitUp, value: unitUp })); const criteriaSearchList = [ { @@ -270,7 +270,7 @@ export class ReclassificationComponent implements OnInit, OnDestroy { pageNumber: 0, size: allunitupsIds.length, }; - this.archiveService.searchArchiveUnitsByCriteria(searchCriteria, accessContract).subscribe((pagedResult: PagedResult) => { + this.archiveService.searchArchiveUnitsByCriteria(searchCriteria).subscribe((pagedResult: PagedResult) => { if (pagedResult.results) { pagedResult.results.map((ua) => { const title = ArchiveService.fetchTitle(ua.Title, ua.Title_); @@ -293,7 +293,7 @@ export class ReclassificationComponent implements OnInit, OnDestroy { onSubmit() { const reclassificationQuery = this.getReclassificationQuery(); - this.archiveService.reclassification(reclassificationQuery, this.data.accessContract).subscribe( + this.archiveService.reclassification(reclassificationQuery).subscribe( (response) => { this.dialogRef.close(true); const serviceUrl = diff --git a/ui/ui-frontend/projects/archive-search/src/app/archive/archive-search/additional-actions-search/transfer-request-modal/transfer-request-modal.component.ts b/ui/ui-frontend/projects/archive-search/src/app/archive/archive-search/additional-actions-search/transfer-request-modal/transfer-request-modal.component.ts index 6b6d15b9d2f..6ee32b9a45a 100644 --- a/ui/ui-frontend/projects/archive-search/src/app/archive/archive-search/additional-actions-search/transfer-request-modal/transfer-request-modal.component.ts +++ b/ui/ui-frontend/projects/archive-search/src/app/archive/archive-search/additional-actions-search/transfer-request-modal/transfer-request-modal.component.ts @@ -97,7 +97,7 @@ export class TransferRequestModalComponent implements OnInit, OnDestroy { lifeCycleLogs: this.transferRequestFormGroup.get('lifeCycleLogs').value === this.translate.instant('ARCHIVE_SEARCH.DIP.INCLUDE'), }; - this.archiveService.transferRequestService(transferRequestDto, this.data.accessContract).subscribe( + this.archiveService.transferRequestService(transferRequestDto).subscribe( (response) => { this.dialogRef.close(true); const serviceUrl = diff --git a/ui/ui-frontend/projects/archive-search/src/app/archive/archive-search/archive-search.component.ts b/ui/ui-frontend/projects/archive-search/src/app/archive/archive-search/archive-search.component.ts index 626ed14287c..dc97b3e7879 100644 --- a/ui/ui-frontend/projects/archive-search/src/app/archive/archive-search/archive-search.component.ts +++ b/ui/ui-frontend/projects/archive-search/src/app/archive/archive-search/archive-search.component.ts @@ -508,7 +508,7 @@ export class ArchiveSearchComponent implements OnInit, OnChanges, OnDestroy, Aft if (this.hasSearchCriterias()) { this.pendingGetFixedCount = true; this.submitedGetFixedCount = true; - this.archiveService.getTotalTrackHitsByCriteria(this.criteriaSearchList, this.accessContract).subscribe( + this.archiveService.getTotalTrackHitsByCriteria(this.criteriaSearchList).subscribe( (exactCountResults: number) => { if (exactCountResults !== -1) { this.totalResults = exactCountResults; @@ -555,7 +555,7 @@ export class ArchiveSearchComponent implements OnInit, OnChanges, OnDestroy, Aft computeFacets: true, }; - this.archiveService.searchArchiveUnitsByCriteria(searchCriteria, this.accessContract).subscribe( + this.archiveService.searchArchiveUnitsByCriteria(searchCriteria).subscribe( (pagedResult: PagedResult) => { this.archiveSearchResultFacets = this.archiveFacetsService.extractRulesFacetsResults(pagedResult.facets); @@ -588,7 +588,7 @@ export class ArchiveSearchComponent implements OnInit, OnChanges, OnDestroy, Aft computeFacets: includeFacets, }; this.archiveExchangeDataService.emitLastSearchCriteriaDtoSubject(searchCriteria); - this.archiveService.searchArchiveUnitsByCriteria(searchCriteria, this.accessContract).subscribe( + this.archiveService.searchArchiveUnitsByCriteria(searchCriteria).subscribe( (pagedResult: PagedResult) => { if (includeFacets) { this.archiveSearchResultFacets = this.archiveFacetsService.extractRulesFacetsResults(pagedResult.facets); @@ -800,7 +800,7 @@ export class ArchiveSearchComponent implements OnInit, OnChanges, OnDestroy, Aft this.pendingGetFixedCount = true; this.submitedGetFixedCount = true; const exactCountResults: number = await this.archiveService - .getTotalTrackHitsByCriteria(this.criteriaSearchList, this.accessContract) + .getTotalTrackHitsByCriteria(this.criteriaSearchList) .toPromise(); if (exactCountResults !== -1) { this.totalResults = exactCountResults; @@ -851,7 +851,7 @@ export class ArchiveSearchComponent implements OnInit, OnChanges, OnDestroy, Aft sortingCriteria, language: this.translateService.currentLang, }; - this.archiveService.exportCsvSearchArchiveUnitsByCriteria(searchCriteria, this.accessContract); + this.archiveService.exportCsvSearchArchiveUnitsByCriteria(searchCriteria); } } @@ -999,7 +999,6 @@ export class ArchiveSearchComponent implements OnInit, OnChanges, OnDestroy, Aft data: { itemSelected: this.itemSelected, reclassificationCriteria, - accessContract: this.accessContract, tenantIdentifier: this.tenantIdentifier, archiveUnitGuidSelected: this.archiveUnitGuidSelected, archiveUnitAllunitup: this.archiveUnitAllunitup, @@ -1025,7 +1024,7 @@ export class ArchiveSearchComponent implements OnInit, OnChanges, OnDestroy, Aft this.pendingGetFixedCount = true; this.submitedGetFixedCount = true; const exactCountResults: number = await this.archiveService - .getTotalTrackHitsByCriteria(this.criteriaSearchList, this.accessContract) + .getTotalTrackHitsByCriteria(this.criteriaSearchList) .toPromise(); if (exactCountResults !== -1) { this.totalResults = exactCountResults; @@ -1046,8 +1045,7 @@ export class ArchiveSearchComponent implements OnInit, OnChanges, OnDestroy, Aft async launchComputedInheritedRulesModal() { await this.prepareToLaunchVitamAction(); this.computeInheritedRulesService.launchComputedInheritedRulesModal( - this.listOfUACriteriaSearch, - this.accessContract, + this.listOfUACriteriaSearch, this.numberOfHoldingUnitTypeOnComputedRules, this.tenantIdentifier, this.currentPage, @@ -1069,7 +1067,6 @@ export class ArchiveSearchComponent implements OnInit, OnChanges, OnDestroy, Aft this.updateUnitManagementRuleService.updateManagementRuleWithThresholds( this.listOfUACriteriaSearch, this.criteriaSearchList, - this.accessContract, this.currentPage, this.tenantIdentifier, this.itemSelected, @@ -1113,8 +1110,7 @@ export class ArchiveSearchComponent implements OnInit, OnChanges, OnDestroy, Aft .pipe(filter((result) => !!result)) .subscribe(() => { this.archiveUnitEliminationService.launchEliminationAnalysisModal( - this.listOfUACriteriaSearch, - this.accessContract, + this.listOfUACriteriaSearch, this.selectedItemCount, this.itemSelected, this.tenantIdentifier, @@ -1128,7 +1124,6 @@ export class ArchiveSearchComponent implements OnInit, OnChanges, OnDestroy, Aft this.archiveUnitEliminationService.launchEliminationAnalysisModal( this.listOfUACriteriaSearch, - this.accessContract, this.selectedItemCount, this.itemSelected, this.tenantIdentifier, @@ -1152,7 +1147,6 @@ export class ArchiveSearchComponent implements OnInit, OnChanges, OnDestroy, Aft .subscribe(() => { this.archiveUnitEliminationService.launchEliminationAnalysisModal( this.listOfUACriteriaSearch, - this.accessContract, this.selectedItemCount, this.itemSelected, this.tenantIdentifier, @@ -1166,7 +1160,6 @@ export class ArchiveSearchComponent implements OnInit, OnChanges, OnDestroy, Aft this.archiveUnitEliminationService.launchEliminationAnalysisModal( this.listOfUACriteriaSearch, - this.accessContract, this.selectedItemCount, this.itemSelected, this.tenantIdentifier, @@ -1237,7 +1230,6 @@ export class ArchiveSearchComponent implements OnInit, OnChanges, OnDestroy, Aft private launchEliminationModal() { this.archiveUnitEliminationService.launchEliminationModal( this.listOfUACriteriaSearch, - this.accessContract, this.tenantIdentifier, this.currentPage, this.confirmSecondActionBigNumberOfResultsActionDialog diff --git a/ui/ui-frontend/projects/archive-search/src/app/archive/archive-search/transfer-acknowledgment/transfer-acknowledgment.component.ts b/ui/ui-frontend/projects/archive-search/src/app/archive/archive-search/transfer-acknowledgment/transfer-acknowledgment.component.ts index 1febe1972c1..58a17a7c83d 100644 --- a/ui/ui-frontend/projects/archive-search/src/app/archive/archive-search/transfer-acknowledgment/transfer-acknowledgment.component.ts +++ b/ui/ui-frontend/projects/archive-search/src/app/archive/archive-search/transfer-acknowledgment/transfer-acknowledgment.component.ts @@ -228,7 +228,7 @@ export class TransferAcknowledgmentComponent implements OnInit, OnDestroy { applyTransferAcknowledgment() { this.isSubmitBtnDisabled = true; this.transferAcknowledgementSubscription = this.archiveSearchService - .transferAcknowledgment(this.tenantIdentifier, this.fileToUpload, this.fileName, this.accessContract) + .transferAcknowledgment(this.tenantIdentifier, this.fileToUpload, this.fileName) .subscribe( (operationId) => { this.dialogRef.close(true); diff --git a/ui/ui-frontend/projects/archive-search/src/app/archive/archive.service.ts b/ui/ui-frontend/projects/archive-search/src/app/archive/archive.service.ts index 17f7cae797c..036bd6515e4 100644 --- a/ui/ui-frontend/projects/archive-search/src/app/archive/archive.service.ts +++ b/ui/ui-frontend/projects/archive-search/src/app/archive/archive.service.ts @@ -49,7 +49,7 @@ import { Ontology, SearchService, SecurityService, - Unit, + Unit } from 'ui-frontend-common'; import { ArchiveApiService } from '../core/api/archive-api.service'; import { ExportDIPCriteriaList } from './models/dip-request-detail.interface'; @@ -90,10 +90,9 @@ export class ArchiveService extends SearchService { return this.http.get('assets/ontologies/ontologies.json').pipe(map((resp) => resp)); } - public loadFilingHoldingSchemeTree(tenantIdentifier: number, accessContractId: string): Observable { + public loadFilingHoldingSchemeTree(tenantIdentifier: number): Observable { const headers = new HttpHeaders({ - 'X-Tenant-Id': '' + tenantIdentifier, - 'X-Access-Contract-Id': accessContractId, + 'X-Tenant-Id': '' + tenantIdentifier }); return this.archiveApiService.getFilingHoldingScheme(headers).pipe( @@ -135,9 +134,9 @@ export class ArchiveService extends SearchService { return data.sort(byTitle(this.locale)); } - exportCsvSearchArchiveUnitsByCriteria(criteriaDto: SearchCriteriaDto, accessContract: string) { + exportCsvSearchArchiveUnitsByCriteria(criteriaDto: SearchCriteriaDto) { let headers = new HttpHeaders().append('Content-Type', 'application/json'); - headers = headers.append('X-Access-Contract-Id', accessContract); + return this.archiveApiService.exportCsvSearchArchiveUnitsByCriteria(criteriaDto, headers).subscribe( (file) => { @@ -163,9 +162,9 @@ export class ArchiveService extends SearchService { ); } - searchArchiveUnitsByCriteria(criteriaDto: SearchCriteriaDto, accessContract: string): Observable { + searchArchiveUnitsByCriteria(criteriaDto: SearchCriteriaDto): Observable { let headers = new HttpHeaders().append('Content-Type', 'application/json'); - headers = headers.append('X-Access-Contract-Id', accessContract); + return this.archiveApiService.searchArchiveUnitsByCriteria(criteriaDto, headers).pipe( // timeout(TIMEOUT_SEC), @@ -180,8 +179,8 @@ export class ArchiveService extends SearchService { ); } - launchDownloadObjectFromUnit(unitId: string, tenantIdentifier: number, accessContract: string, qualifier?: string, version?: number) { - this.downloadFile(this.archiveApiService.getDownloadObjectFromUnitUrl(unitId, accessContract, tenantIdentifier, qualifier, version)); + launchDownloadObjectFromUnit(unitId: string, tenantIdentifier: number, qualifier?: string, version?: number) { + this.downloadFile(this.archiveApiService.getDownloadObjectFromUnitUrl(unitId, tenantIdentifier, qualifier, version)); } private buildPagedResults(response: SearchResponse): PagedResult { @@ -215,39 +214,37 @@ export class ArchiveService extends SearchService { return this.securityService.hasRole(applicationIdentifier, tenantIdentifier, role); } - exportDIPService(exportDIPCriteriaList: ExportDIPCriteriaList, accessContract: string): Observable { + exportDIPService(exportDIPCriteriaList: ExportDIPCriteriaList): Observable { let headers = new HttpHeaders().append('Content-Type', 'application/json'); - headers = headers.append('X-Access-Contract-Id', accessContract); + return this.archiveApiService.exportDipApiService(exportDIPCriteriaList, headers); } - transferRequestService(transferDipCriteriaDto: TransferRequestDto, accessContract: string): Observable { + transferRequestService(transferDipCriteriaDto: TransferRequestDto): Observable { let headers = new HttpHeaders().append('Content-Type', 'application/json'); - headers = headers.append('X-Access-Contract-Id', accessContract); + return this.archiveApiService.transferDipApiService(transferDipCriteriaDto, headers); } - startEliminationAnalysis(criteriaDto: SearchCriteriaDto, accessContract: string) { - let headers = new HttpHeaders().append('Content-Type', 'application/json'); - headers = headers.append('X-Access-Contract-Id', accessContract); + startEliminationAnalysis(criteriaDto: SearchCriteriaDto, ) { + let headers = new HttpHeaders().append('Content-Type', 'application/json'); return this.archiveApiService.startEliminationAnalysis(criteriaDto, headers); } - launchEliminationAction(criteriaDto: SearchCriteriaDto, accessContract: string) { - let headers = new HttpHeaders().append('Content-Type', 'application/json'); - headers = headers.append('X-Access-Contract-Id', accessContract); + launchEliminationAction(criteriaDto: SearchCriteriaDto) { + let headers = new HttpHeaders().append('Content-Type', 'application/json'); return this.archiveApiService.launchEliminationAction(criteriaDto, headers); } - updateUnitsRules(ruleSearchCriteriaDto: RuleSearchCriteriaDto, accessContract: string): Observable { + updateUnitsRules(ruleSearchCriteriaDto: RuleSearchCriteriaDto): Observable { let headers = new HttpHeaders().append('Content-Type', 'application/json'); - headers = headers.append('X-Access-Contract-Id', accessContract); + return this.archiveApiService.updateUnitsRules(ruleSearchCriteriaDto, headers); } getAccessContractById(accessContract: string): Observable { let headers = new HttpHeaders().append('Content-Type', 'application/json'); - headers = headers.append('X-Access-Contract-Id', accessContract); + return this.accessContractApiService.getAccessContractById(accessContract, headers); } @@ -274,7 +271,7 @@ export class ArchiveService extends SearchService { location.href = url; } - buildArchiveUnitPath(archiveUnit: Unit, accessContract: string) { + buildArchiveUnitPath(archiveUnit: Unit) { const allunitups = archiveUnit['#allunitups'].map((unitUp) => ({ id: unitUp, value: unitUp })); if (!allunitups || allunitups.length === 0) { @@ -300,7 +297,7 @@ export class ArchiveService extends SearchService { size: archiveUnit['#allunitups'].length, }; - return this.searchArchiveUnitsByCriteria(searchCriteria, accessContract).pipe( + return this.searchArchiveUnitsByCriteria(searchCriteria).pipe( map((pagedResult: PagedResult) => { let resumePath = ''; let fullPath = ''; @@ -330,20 +327,20 @@ export class ArchiveService extends SearchService { ); } - launchComputedInheritedRules(criteriaDto: SearchCriteriaDto, accessContract: string): Observable { + launchComputedInheritedRules(criteriaDto: SearchCriteriaDto): Observable { let headers = new HttpHeaders().append('Content-Type', 'application/json'); - headers = headers.append('X-Access-Contract-Id', accessContract); + return this.archiveApiService.launchComputedInheritedRules(criteriaDto, headers); } - getTotalTrackHitsByCriteria(criteriaElts: SearchCriteriaEltDto[], accessContract: string): Observable { + getTotalTrackHitsByCriteria(criteriaElts: SearchCriteriaEltDto[]): Observable { const searchCriteria = { criteriaList: criteriaElts, pageNumber: 0, size: 1, trackTotalHits: true, }; - return this.searchArchiveUnitsByCriteria(searchCriteria, accessContract).pipe( + return this.searchArchiveUnitsByCriteria(searchCriteria).pipe( map((pagedResult: PagedResult) => { return pagedResult.totalResults; }), @@ -353,30 +350,30 @@ export class ArchiveService extends SearchService { ); } - selectUnitWithInheritedRules(criteriaDto: SearchCriteriaDto, accessContract: string): Observable { + selectUnitWithInheritedRules(criteriaDto: SearchCriteriaDto): Observable { let headers = new HttpHeaders().append('Content-Type', 'application/json'); - headers = headers.append('X-Access-Contract-Id', accessContract); + return this.archiveApiService.selectUnitWithInheritedRules(criteriaDto, headers); } - reclassification(criteriaDto: ReclassificationCriteriaDto, accessContract: string): Observable { + reclassification(criteriaDto: ReclassificationCriteriaDto): Observable { let headers = new HttpHeaders().append('Content-Type', 'application/json'); - headers = headers.append('X-Access-Contract-Id', accessContract); + return this.archiveApiService.reclassification(criteriaDto, headers); } - updateUnit(id: string, tenantIdentifier: number, accessContract: string, unitMDDDto: UnitDescriptiveMetadataDto): Observable { + updateUnit(id: string, tenantIdentifier: number, unitMDDDto: UnitDescriptiveMetadataDto): Observable { let headers = new HttpHeaders().append('Content-Type', 'application/json'); - headers = headers.append('X-Access-Contract-Id', accessContract).append('X-Tenant-Id', '' + tenantIdentifier); + headers = headers.append('X-Tenant-Id', '' + tenantIdentifier); return this.archiveApiService.updateUnit(id, unitMDDDto, headers); } - transferAcknowledgment(tenantIdentifier: string, xmlFile: Blob, fileName: string, accessContract: string): Observable { + transferAcknowledgment(tenantIdentifier: string, xmlFile: Blob, fileName: string): Observable { let headers = new HttpHeaders(); headers = headers.append('X-Tenant-Id', tenantIdentifier); headers = headers.append('Content-Type', 'application/octet-stream'); headers = headers.append('fileName', fileName); - headers = headers.append('X-Access-Contract-Id', accessContract); + return this.archiveApiService.transferAcknowledgment(xmlFile, headers); } diff --git a/ui/ui-frontend/projects/archive-search/src/app/archive/common-services/archive-unit-elimination.service.ts b/ui/ui-frontend/projects/archive-search/src/app/archive/common-services/archive-unit-elimination.service.ts index 9ba25c7e2d1..d9b7ace7bbf 100644 --- a/ui/ui-frontend/projects/archive-search/src/app/archive/common-services/archive-unit-elimination.service.ts +++ b/ui/ui-frontend/projects/archive-search/src/app/archive/common-services/archive-unit-elimination.service.ts @@ -53,8 +53,7 @@ export class ArchiveUnitEliminationService { } launchEliminationAnalysisModal( - listOfUACriteriaSearch: SearchCriteriaEltDto[], - accessContract: string, + listOfUACriteriaSearch: SearchCriteriaEltDto[], selectedItemCountKnown: boolean, itemSelected: number, tenantIdentifier: number, @@ -63,7 +62,7 @@ export class ArchiveUnitEliminationService { showConfirmBigNumberOfResultsSuscription: Subscription ) { if (selectedItemCountKnown && itemSelected < DEFAULT_RESULT_THRESHOLD) { - this.launchEliminationAnalysis(listOfUACriteriaSearch, accessContract, tenantIdentifier, currentPage); + this.launchEliminationAnalysis(listOfUACriteriaSearch, tenantIdentifier, currentPage); } else { const dialogConfirmSecondActionBigNumberOfResultsActionDialogToOpen = confirmSecondActionBigNumberOfResultsActionDialog; @@ -78,7 +77,6 @@ export class ArchiveUnitEliminationService { .subscribe(() => { this.launchEliminationAnalysis( listOfUACriteriaSearch, - accessContract, tenantIdentifier, currentPage ); @@ -88,8 +86,7 @@ export class ArchiveUnitEliminationService { } private launchEliminationAnalysis( - listOfUACriteriaSearch: SearchCriteriaEltDto[], - accessContract: string, + listOfUACriteriaSearch: SearchCriteriaEltDto[], tenantIdentifier: number, currentPage: number ) { @@ -100,7 +97,7 @@ export class ArchiveUnitEliminationService { language: this.translateService.currentLang, }; - this.archiveService.startEliminationAnalysis(exportDIPSearchCriteria, accessContract).subscribe((data) => { + this.archiveService.startEliminationAnalysis(exportDIPSearchCriteria).subscribe((data) => { const eliminationAnalysisResponse = data.$results; if (eliminationAnalysisResponse && eliminationAnalysisResponse[0].itemId) { const guid = eliminationAnalysisResponse[0].itemId; @@ -113,7 +110,6 @@ export class ArchiveUnitEliminationService { launchEliminationModal( listOfUACriteriaSearch: SearchCriteriaEltDto[], - accessContract: string, tenantIdentifier: number, currentPage: number, confirmSecondActionBigNumberOfResultsActionDialog: TemplateRef @@ -126,13 +122,12 @@ export class ArchiveUnitEliminationService { .afterClosed() .pipe(filter((result) => !!result)) .subscribe(() => { - this.launchEliminationAction(listOfUACriteriaSearch, accessContract, tenantIdentifier, currentPage); + this.launchEliminationAction(listOfUACriteriaSearch, tenantIdentifier, currentPage); }); } private launchEliminationAction( listOfUACriteriaSearch: SearchCriteriaEltDto[], - accessContract: string, tenantIdentifier: number, currentPage: number ) { @@ -143,7 +138,7 @@ export class ArchiveUnitEliminationService { language: this.translateService.currentLang, }; - this.archiveService.launchEliminationAction(exportDIPSearchCriteria, accessContract).subscribe((response) => { + this.archiveService.launchEliminationAction(exportDIPSearchCriteria).subscribe((response) => { const eliminationActionResponse = response.$results; if (eliminationActionResponse && eliminationActionResponse[0].itemId) { diff --git a/ui/ui-frontend/projects/archive-search/src/app/archive/common-services/compute-inherited-rules.service.ts b/ui/ui-frontend/projects/archive-search/src/app/archive/common-services/compute-inherited-rules.service.ts index e1affd73e43..02bdd7af357 100644 --- a/ui/ui-frontend/projects/archive-search/src/app/archive/common-services/compute-inherited-rules.service.ts +++ b/ui/ui-frontend/projects/archive-search/src/app/archive/common-services/compute-inherited-rules.service.ts @@ -51,8 +51,7 @@ export class ComputeInheritedRulesService { ) {} launchComputedInheritedRulesModal( - listOfUACriteriaSearch: SearchCriteriaEltDto[], - accessContract: string, + listOfUACriteriaSearch: SearchCriteriaEltDto[], numberOfHoldingUnitTypeOnComputedRules: number, tenantIdentifier: number, currentPage: number, @@ -74,7 +73,7 @@ export class ComputeInheritedRulesService { language: this.translateService.currentLang, }; - this.archiveService.searchArchiveUnitsByCriteria(computedInheritedRulesSearchCriteria, accessContract).subscribe((response) => { + this.archiveService.searchArchiveUnitsByCriteria(computedInheritedRulesSearchCriteria).subscribe((response) => { numberOfHoldingUnitTypeOnComputedRules = response.totalResults; if (numberOfHoldingUnitTypeOnComputedRules > 0) { const dialogToOpen = launchComputeInheritedRuleAlerteMessageDialog; @@ -102,7 +101,7 @@ export class ComputeInheritedRulesService { size: PAGE_SIZE, language: this.translateService.currentLang, }; - this.archiveService.launchComputedInheritedRules(computedInheritedRulesDSLQuery, accessContract).subscribe((operationId) => { + this.archiveService.launchComputedInheritedRules(computedInheritedRulesDSLQuery).subscribe((operationId) => { const guid = operationId; const message = this.translateService.instant('ARCHIVE_SEARCH.COMPUTED_INHERITED_RULES.OPERATION_MESSAGE'); const serviceUrl = diff --git a/ui/ui-frontend/projects/archive-search/src/app/archive/common-services/update-unit-management-rule.service.ts b/ui/ui-frontend/projects/archive-search/src/app/archive/common-services/update-unit-management-rule.service.ts index 42b330ec4b0..f4f08856e42 100644 --- a/ui/ui-frontend/projects/archive-search/src/app/archive/common-services/update-unit-management-rule.service.ts +++ b/ui/ui-frontend/projects/archive-search/src/app/archive/common-services/update-unit-management-rule.service.ts @@ -57,8 +57,7 @@ export class UpdateUnitManagementRuleService { goToUpdateManagementRule( listOfUACriteriaSearch: SearchCriteriaEltDto[], - criteriaSearchList: SearchCriteriaEltDto[], - accessContract: string, + criteriaSearchList: SearchCriteriaEltDto[], currentPage: number, tenantIdentifier: number, numberOfHoldingUnitType: number, @@ -80,7 +79,6 @@ export class UpdateUnitManagementRuleService { this.updateManagementRule( listOfUACriteriaSearch, criteriaSearchList, - accessContract, currentPage, tenantIdentifier, numberOfHoldingUnitType, @@ -114,8 +112,7 @@ export class UpdateUnitManagementRuleService { private updateManagementRule( listOfUACriteriaSearch: SearchCriteriaEltDto[], - criteriaSearchList: SearchCriteriaEltDto[], - accessContract: string, + criteriaSearchList: SearchCriteriaEltDto[], currentPage: number, tenantIdentifier: number, numberOfHoldingUnitType: number, @@ -138,7 +135,7 @@ export class UpdateUnitManagementRuleService { size: PAGE_SIZE, language: this.translateService.currentLang, }; - this.archiveService.searchArchiveUnitsByCriteria(criteriaSearchDSLQuery, accessContract).subscribe((data) => { + this.archiveService.searchArchiveUnitsByCriteria(criteriaSearchDSLQuery).subscribe((data) => { numberOfHoldingUnitType = data.totalResults; if (numberOfHoldingUnitType > 0) { const dialogToOpen = updateArchiveUnitAlerteMessageDialog; @@ -167,7 +164,6 @@ export class UpdateUnitManagementRuleService { updateManagementRuleWithThresholds( listOfUACriteriaSearch: SearchCriteriaEltDto[], criteriaSearchList: SearchCriteriaEltDto[], - accessContract: string, currentPage: number, tenantIdentifier: number, numberOfHoldingUnitType: number, @@ -205,7 +201,6 @@ export class UpdateUnitManagementRuleService { this.goToUpdateManagementRule( listOfUACriteriaSearch, criteriaSearchList, - accessContract, currentPage, tenantIdentifier, numberOfHoldingUnitType, @@ -221,7 +216,6 @@ export class UpdateUnitManagementRuleService { this.goToUpdateManagementRule( listOfUACriteriaSearch, criteriaSearchList, - accessContract, currentPage, tenantIdentifier, numberOfHoldingUnitType, @@ -248,7 +242,6 @@ export class UpdateUnitManagementRuleService { this.goToUpdateManagementRule( listOfUACriteriaSearch, criteriaSearchList, - accessContract, currentPage, tenantIdentifier, numberOfHoldingUnitType, @@ -264,7 +257,6 @@ export class UpdateUnitManagementRuleService { this.goToUpdateManagementRule( listOfUACriteriaSearch, criteriaSearchList, - accessContract, currentPage, tenantIdentifier, numberOfHoldingUnitType, diff --git a/ui/ui-frontend/projects/archive-search/src/app/archive/filing-holding-scheme/filing-holding-scheme.component.ts b/ui/ui-frontend/projects/archive-search/src/app/archive/filing-holding-scheme/filing-holding-scheme.component.ts index 9af768ea709..ba55bfa25b8 100644 --- a/ui/ui-frontend/projects/archive-search/src/app/archive/filing-holding-scheme/filing-holding-scheme.component.ts +++ b/ui/ui-frontend/projects/archive-search/src/app/archive/filing-holding-scheme/filing-holding-scheme.component.ts @@ -140,7 +140,7 @@ export class FilingHoldingSchemeComponent implements OnInit, OnChanges, OnDestro initFilingHoldingSchemeTree() { this.loadingHolding = true; this.subscriptions.add( - this.archiveService.loadFilingHoldingSchemeTree(this.tenantIdentifier, this.accessContract).subscribe((nodes) => { + this.archiveService.loadFilingHoldingSchemeTree(this.tenantIdentifier).subscribe((nodes) => { this.fullNodes = nodes; this.nestedDataSourceFull.data = nodes; this.nestedTreeControlFull.dataNodes = nodes; @@ -190,7 +190,7 @@ export class FilingHoldingSchemeComponent implements OnInit, OnChanges, OnDestro size: 1, }; this.subscriptions.add( - this.archiveService.searchArchiveUnitsByCriteria(searchCriteria, this.accessContract) + this.archiveService.searchArchiveUnitsByCriteria(searchCriteria) .subscribe((pageResult: PagedResult) => { this.showArchiveUnitDetails.emit(pageResult.results[0]); this.loadingArchiveUnit[`${from}`] = false; diff --git a/ui/ui-frontend/projects/archive-search/src/app/archive/filing-holding-scheme/leaves-tree/leaves-tree.component.ts b/ui/ui-frontend/projects/archive-search/src/app/archive/filing-holding-scheme/leaves-tree/leaves-tree.component.ts index 00048086b6c..866c61f16e8 100644 --- a/ui/ui-frontend/projects/archive-search/src/app/archive/filing-holding-scheme/leaves-tree/leaves-tree.component.ts +++ b/ui/ui-frontend/projects/archive-search/src/app/archive/filing-holding-scheme/leaves-tree/leaves-tree.component.ts @@ -35,7 +35,7 @@ import { DescriptionLevel, FilingHoldingSchemeNode, VitamuiIcons, - VitamuiUnitTypes, + VitamuiUnitTypes } from 'ui-frontend-common'; import { ArchiveSharedDataService } from '../../../core/archive-shared-data.service'; import { ArchiveService } from '../../archive.service'; @@ -233,7 +233,7 @@ export class LeavesTreeComponent implements OnInit, OnChanges, OnDestroy { } private sendSearchArchiveUnitsByCriteria(searchCriteria: SearchCriteriaDto): Observable { - return this.archiveService.searchArchiveUnitsByCriteria(searchCriteria, this.accessContract).pipe(first()); + return this.archiveService.searchArchiveUnitsByCriteria(searchCriteria).pipe(first()); } private refreshTreeNodes() { diff --git a/ui/ui-frontend/projects/archive-search/src/app/archive/validators/archive-unit-validator.service.ts b/ui/ui-frontend/projects/archive-search/src/app/archive/validators/archive-unit-validator.service.ts index ecdcb71b88b..d8e4c8b22bf 100644 --- a/ui/ui-frontend/projects/archive-search/src/app/archive/validators/archive-unit-validator.service.ts +++ b/ui/ui-frontend/projects/archive-search/src/app/archive/validators/archive-unit-validator.service.ts @@ -65,11 +65,11 @@ export class ArchiveUnitValidatorService { return true ? archiveUnitAllunitup.filter((p) => p === parentId).length > 0 : false; } - existArchiveUnit(criteriaDto: SearchCriteriaDto, accessContract: string): AsyncValidatorFn { - return this.unitExists('targetGuid', criteriaDto, accessContract); + existArchiveUnit(criteriaDto: SearchCriteriaDto): AsyncValidatorFn { + return this.unitExists('targetGuid', criteriaDto); } - private unitExists(existTag: string, criteriaDto: SearchCriteriaDto, accessContract: string) { + private unitExists(existTag: string, criteriaDto: SearchCriteriaDto) { return (control: AbstractControl) => { const auditExists: any = {}; auditExists[existTag] = true; @@ -85,7 +85,7 @@ export class ArchiveUnitValidatorService { switchMap(() => control.value !== null ? this.archiveService - .searchArchiveUnitsByCriteria(criteria, accessContract) + .searchArchiveUnitsByCriteria(criteria) .toPromise() .then((data) => { if (data.totalResults === 1) { diff --git a/ui/ui-frontend/projects/archive-search/src/app/core/api/archive-api.service.ts b/ui/ui-frontend/projects/archive-search/src/app/core/api/archive-api.service.ts index a060ec98e58..faf2e1081b0 100644 --- a/ui/ui-frontend/projects/archive-search/src/app/core/api/archive-api.service.ts +++ b/ui/ui-frontend/projects/archive-search/src/app/core/api/archive-api.service.ts @@ -88,8 +88,8 @@ export class ArchiveApiService extends BaseHttpClient { }); } - getDownloadObjectFromUnitUrl(unitId: string, accessContractId: string, tenantId: number, qualifier?: string, version?: number): string { - let url = `${this.apiUrl}/downloadobjectfromunit/${unitId}?tenantId=${tenantId}&contractId=${accessContractId}`; + getDownloadObjectFromUnitUrl(unitId: string, tenantId: number, qualifier?: string, version?: number): string { + let url = `${this.apiUrl}/downloadobjectfromunit/${unitId}?tenantId=${tenantId}`; if (qualifier && version) { url += `&qualifier=${qualifier}&version=${version}`; }