diff --git a/app/src/main/resources/swagger/api-docs.json b/app/src/main/resources/swagger/api-docs.json index e3582c818..657fd775a 100644 --- a/app/src/main/resources/swagger/api-docs.json +++ b/app/src/main/resources/swagger/api-docs.json @@ -2660,7 +2660,7 @@ "content" : { "application/json" : { "schema" : { - "$ref" : "#/components/schemas/UserResource" + "$ref" : "#/components/schemas/GetUserResource" } } } @@ -3394,6 +3394,33 @@ } } }, + "GetUserResource" : { + "title" : "GetUserResource", + "type" : "object", + "properties" : { + "email" : { + "description" : "User's institutional email", + "$ref" : "#/components/schemas/CertifiedFieldResourceOfstring" + }, + "familyName" : { + "description" : "User's surname", + "$ref" : "#/components/schemas/CertifiedFieldResourceOfstring" + }, + "fiscalCode" : { + "type" : "string", + "description" : "User's fiscal code" + }, + "id" : { + "type" : "string", + "description" : "User's unique identifier", + "format" : "uuid" + }, + "name" : { + "description" : "User's name", + "$ref" : "#/components/schemas/CertifiedFieldResourceOfstring" + } + } + }, "IdentityTokenResource" : { "title" : "IdentityTokenResource", "required" : [ "token" ], diff --git a/web/src/main/java/it/pagopa/selfcare/dashboard/web/controller/UserV2Controller.java b/web/src/main/java/it/pagopa/selfcare/dashboard/web/controller/UserV2Controller.java index 705b4ec64..8909d9f55 100644 --- a/web/src/main/java/it/pagopa/selfcare/dashboard/web/controller/UserV2Controller.java +++ b/web/src/main/java/it/pagopa/selfcare/dashboard/web/controller/UserV2Controller.java @@ -17,6 +17,7 @@ import it.pagopa.selfcare.dashboard.web.model.mapper.UserMapper; import it.pagopa.selfcare.dashboard.web.model.mapper.UserMapperV2; import it.pagopa.selfcare.dashboard.web.model.product.ProductUserResource; +import it.pagopa.selfcare.dashboard.web.model.user.GetUserResource; import it.pagopa.selfcare.dashboard.web.model.user.UserResource; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -95,7 +96,7 @@ public void deleteRelationshipById(@ApiParam("${swagger.dashboard.user.model.id} @ResponseStatus(HttpStatus.OK) @ApiOperation(value = "", notes = "${swagger.dashboard.user.api.getUserByInternalId}", nickname = "v2GetUserByIdUsingGET") @PreAuthorize("hasPermission(new it.pagopa.selfcare.dashboard.web.security.FilterAuthorityDomain(#institutionId, null, null), 'Selc:ManageProductUsers')") - public UserResource getUserById(@ApiParam("${swagger.dashboard.user.model.id}") + public GetUserResource getUserById(@ApiParam("${swagger.dashboard.user.model.id}") @PathVariable("id") String userId, @ApiParam("${swagger.dashboard.institutions.model.id}") @RequestParam(value = "institutionId") @@ -108,7 +109,7 @@ public UserResource getUserById(@ApiParam("${swagger.dashboard.user.model.id}") User user = userService.getUserById(userId, institutionId, fields); log.debug(LogUtils.CONFIDENTIAL_MARKER, "getUserById = {}", user); log.trace("getUserById end"); - return userMapperV2.toUserResource(user); + return userMapperV2.toGetUserResource(user); } @PostMapping(value = "/search", produces = MediaType.APPLICATION_JSON_VALUE) diff --git a/web/src/main/java/it/pagopa/selfcare/dashboard/web/model/mapper/UserMapperV2.java b/web/src/main/java/it/pagopa/selfcare/dashboard/web/model/mapper/UserMapperV2.java index 975909020..d6c0a101d 100644 --- a/web/src/main/java/it/pagopa/selfcare/dashboard/web/model/mapper/UserMapperV2.java +++ b/web/src/main/java/it/pagopa/selfcare/dashboard/web/model/mapper/UserMapperV2.java @@ -1,9 +1,9 @@ package it.pagopa.selfcare.dashboard.web.model.mapper; -import it.pagopa.selfcare.dashboard.connector.exception.InvalidRequestException; import it.pagopa.selfcare.dashboard.connector.model.user.*; import it.pagopa.selfcare.dashboard.web.model.UpdateUserDto; import it.pagopa.selfcare.dashboard.web.model.user.CertifiedFieldResource; +import it.pagopa.selfcare.dashboard.web.model.user.GetUserResource; import it.pagopa.selfcare.dashboard.web.model.user.UserResource; import it.pagopa.selfcare.onboarding.common.PartyRole; import org.apache.commons.lang3.StringUtils; @@ -24,6 +24,11 @@ public interface UserMapperV2 { @Mapping(target = "email", expression = "java(toCertifiedFieldResource(model.getEmail()))") UserResource toUserResource(User model); + @Mapping(target = "name", expression = "java(toCertifiedFieldResource(model.getName()))") + @Mapping(target = "familyName", expression = "java(toCertifiedFieldResource(model.getFamilyName()))") + @Mapping(target = "email", expression = "java(toCertifiedFieldResource(model.getEmail()))") + GetUserResource toGetUserResource(User model); + UpdateUserRequestDto fromUpdateUser(UpdateUserDto userDto); @Named("toCertifiedFieldResource") diff --git a/web/src/main/java/it/pagopa/selfcare/dashboard/web/model/user/GetUserResource.java b/web/src/main/java/it/pagopa/selfcare/dashboard/web/model/user/GetUserResource.java new file mode 100644 index 000000000..6e9248ec2 --- /dev/null +++ b/web/src/main/java/it/pagopa/selfcare/dashboard/web/model/user/GetUserResource.java @@ -0,0 +1,26 @@ +package it.pagopa.selfcare.dashboard.web.model.user; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.UUID; + +@Data +public class GetUserResource { + + @ApiModelProperty(value = "${swagger.dashboard.user.model.id}") + private UUID id; + + @ApiModelProperty(value = "${swagger.dashboard.user.model.name}") + private CertifiedFieldResource name; + + @ApiModelProperty(value = "${swagger.dashboard.user.model.surname}") + private CertifiedFieldResource familyName; + + @ApiModelProperty(value = "${swagger.dashboard.user.model.institutionalEmail}") + private CertifiedFieldResource email; + + @ApiModelProperty(value = "${swagger.dashboard.user.model.fiscalCode}") + private String fiscalCode; + +} diff --git a/web/src/test/java/it/pagopa/selfcare/dashboard/web/controller/UserV2ControllerTest.java b/web/src/test/java/it/pagopa/selfcare/dashboard/web/controller/UserV2ControllerTest.java index 7b2a4adfa..1615e5d0d 100644 --- a/web/src/test/java/it/pagopa/selfcare/dashboard/web/controller/UserV2ControllerTest.java +++ b/web/src/test/java/it/pagopa/selfcare/dashboard/web/controller/UserV2ControllerTest.java @@ -8,6 +8,7 @@ import it.pagopa.selfcare.dashboard.web.model.SearchUserDto; import it.pagopa.selfcare.dashboard.web.model.UpdateUserDto; import it.pagopa.selfcare.dashboard.web.model.mapper.UserMapperV2Impl; +import it.pagopa.selfcare.dashboard.web.model.user.GetUserResource; import it.pagopa.selfcare.dashboard.web.model.user.UserResource; import it.pagopa.selfcare.onboarding.common.PartyRole; import org.junit.jupiter.api.BeforeEach; @@ -136,8 +137,8 @@ void getUserById() throws Exception { byte[] userStream = Files.readAllBytes(Paths.get(FILE_JSON_PATH + "User.json")); User user = objectMapper.readValue(userStream, new TypeReference<>() { }); - byte[] userInfoStream = Files.readAllBytes(Paths.get(FILE_JSON_PATH + "UserResource.json")); - UserResource userResource = objectMapper.readValue(userInfoStream, new TypeReference<>() { + byte[] userInfoStream = Files.readAllBytes(Paths.get(FILE_JSON_PATH + "GetUserResource.json")); + GetUserResource userResource = objectMapper.readValue(userInfoStream, new TypeReference<>() { }); when(userServiceMock.getUserById(userId, institutionId, fields)).thenReturn(user); diff --git a/web/src/test/resources/json/GetUserResource.json b/web/src/test/resources/json/GetUserResource.json new file mode 100644 index 000000000..9529da9c5 --- /dev/null +++ b/web/src/test/resources/json/GetUserResource.json @@ -0,0 +1,16 @@ +{ + "id": "c8b70220-dbe2-4e33-925e-92b96f8b65e6", + "name": { + "certified": true, + "value": "name" + }, + "familyName": { + "certified": true, + "value": "familyName" + }, + "email": { + "certified": true, + "value": "email@example.com" + }, + "fiscalCode": "fiscalCode" +} \ No newline at end of file