Skip to content

Commit

Permalink
MOSIP-36805 : Partners' details (Partner Admin) : First Name and Last…
Browse files Browse the repository at this point in the history
… Name of Partner to be displayed in View individual Partner detail (#1037)

* MOSIP-36805 : Partners' details (Partner Admin) : First Name and Last Name of Partner to be displayed in View individual Partner detail

Signed-off-by: sudeep <[email protected]>

* MOSIP-36805 : Partners' details (Partner Admin) : First Name and Last Name of Partner to be displayed in View individual Partner detail

Signed-off-by: sudeep <[email protected]>

* MOSIP-36805 : Partners' details (Partner Admin) : First Name and Last Name of Partner to be displayed in View individual Partner detail

Signed-off-by: sudeep <[email protected]>

* MOSIP-36805 : Partners' details (Partner Admin) : First Name and Last Name of Partner to be displayed in View individual Partner detail

Signed-off-by: sudeep <[email protected]>

* MOSIP-36805 : Partners' details (Partner Admin) : First Name and Last Name of Partner to be displayed in View individual Partner detail

Signed-off-by: sudeep <[email protected]>

* MOSIP-36805 : Partners' details (Partner Admin) : First Name and Last Name of Partner to be displayed in View individual Partner detail

Signed-off-by: sudeep <[email protected]>

* MOSIP-36805 : Partners' details (Partner Admin) : First Name and Last Name of Partner to be displayed in View individual Partner detail

Signed-off-by: sudeep <[email protected]>

* MOSIP-36805 : Partners' details (Partner Admin) : First Name and Last Name of Partner to be displayed in View individual Partner detail

Signed-off-by: sudeep <[email protected]>

* MOSIP-36805 : Partners' details (Partner Admin) : First Name and Last Name of Partner to be displayed in View individual Partner detail

Signed-off-by: sudeep <[email protected]>

* MOSIP-36805 : Partners' details (Partner Admin) : First Name and Last Name of Partner to be displayed in View individual Partner detail

Signed-off-by: sudeep <[email protected]>

* MOSIP-36805 : Partners' details (Partner Admin) : First Name and Last Name of Partner to be displayed in View individual Partner detail

Signed-off-by: sudeep <[email protected]>

* MOSIP-36805 : Partners' details (Partner Admin) : First Name and Last Name of Partner to be displayed in View individual Partner detail

Signed-off-by: sudeep <[email protected]>

* MOSIP-36805 : Partners' details (Partner Admin) : First Name and Last Name of Partner to be displayed in View individual Partner detail

Signed-off-by: sudeep <[email protected]>

* MOSIP-36805 : Partners' details (Partner Admin) : First Name and Last Name of Partner to be displayed in View individual Partner detail

Signed-off-by: sudeep <[email protected]>

---------

Signed-off-by: sudeep <[email protected]>
  • Loading branch information
Sudeep7353 authored Dec 13, 2024
1 parent 9ab88ce commit f340d23
Show file tree
Hide file tree
Showing 6 changed files with 92 additions and 1 deletion.
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package io.mosip.pms.partner.dto;

import lombok.Data;

/**
* DTO is used for fetching user details from Keycloak.
*/
@Data
public class KeycloakUserDto {

private String username;
private String email;
private String firstName;
private String lastName;

}
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,12 @@ public class PartnerDetailsV3Dto {
@Schema(description = "Unique identifier for the partner", example = "partner123")
private String partnerId;

@Schema(description = "First name of the partner", example = "John")
private String firstName;

@Schema(description = "Last name of the partner", example = "Doe")
private String lastName;

@Schema(description = "Status of the partner", example = "approved")
private String approvalStatus;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import io.mosip.pms.common.repository.*;
import io.mosip.pms.common.request.dto.RequestWrapper;
import io.mosip.pms.common.response.dto.ResponseWrapperV2;
import io.mosip.pms.partner.dto.KeycloakUserDto;
import io.mosip.pms.partner.manager.dto.CaCertificateFilterDto;
import io.mosip.pms.partner.exception.PartnerServiceException;
import io.mosip.pms.partner.manager.dto.*;
Expand Down Expand Up @@ -824,6 +825,11 @@ public ResponseWrapperV2<PartnerDetailsV3Dto> getPartnerDetails(String partnerId
partnerDetailsV3Dto.setCertificateExpiryDateTime(cert.getNotAfter());
partnerDetailsV3Dto.setIsCertificateAvailable(true);
}
Optional<KeycloakUserDto> keycloakUserDto = partnerHelper.getUserDetailsByPartnerId(partnerId);
if (keycloakUserDto.isPresent()){
partnerDetailsV3Dto.setFirstName(keycloakUserDto.get().getFirstName());
partnerDetailsV3Dto.setLastName(keycloakUserDto.get().getLastName());
}
responseWrapper.setResponse(partnerDetailsV3Dto);
} catch (PartnerServiceException ex) {
LOGGER.info("sessionId", "idType", "id",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,16 @@
import io.mosip.pms.device.authdevice.repository.SecureBiometricInterfaceRepository;
import io.mosip.pms.partner.constant.ErrorCode;
import io.mosip.pms.partner.constant.PartnerConstants;
import io.mosip.pms.partner.dto.KeycloakUserDto;
import io.mosip.pms.partner.exception.PartnerServiceException;
import io.mosip.pms.partner.response.dto.FtmCertificateDownloadResponseDto;
import io.mosip.pms.partner.response.dto.OriginalCertDownloadResponseDto;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.data.domain.Sort;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Component;
import org.springframework.web.util.UriComponentsBuilder;

import java.security.cert.X509Certificate;
import java.time.LocalDate;
Expand All @@ -31,6 +34,7 @@
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Objects;

@Component
public class PartnerHelper {
Expand Down Expand Up @@ -333,4 +337,32 @@ public void checkIfPartnerIsNotActive(Partner partner) {
ErrorCode.PARTNER_NOT_ACTIVE_EXCEPTION.getErrorMessage());
}
}

public Optional<KeycloakUserDto> getUserDetailsByPartnerId(String partnerId) throws Exception {
try {
Map<String, String> pathSegments = Map.of("username", partnerId);

String apiUrl = UriComponentsBuilder
.fromHttpUrl(Objects.requireNonNull(environment.getProperty("mosip.iam.admin-url")))
.path(Objects.requireNonNull(environment.getProperty("mosip.iam.users-extn-url")))
.queryParam("username", "{username}")
.build()
.toUriString();
MediaType mediaType = MediaType.APPLICATION_JSON;

List<Map<String, Object>> getApiResponse = restUtil.getApiWithContentType(apiUrl, pathSegments, List.class, mediaType);

// Check if the response is empty or null
if (getApiResponse == null || getApiResponse.isEmpty()) {
LOGGER.error("Error while fetching user details for partnerId:", partnerId);
return Optional.empty();
}

return Optional.ofNullable(mapper.readValue(mapper.writeValueAsString(getApiResponse.get(0)), KeycloakUserDto.class));
} catch (Exception e) {
LOGGER.error("Error while fetching user details for partnerId: {}", partnerId, e.getStackTrace());
return Optional.empty();
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ auth.allowed.urls=https://${mosip.pmp.host}/,https://${mosip.pmp.reactjs.ui.host
#auth.allowed.urls=http://${mosip.pmp.host}/,http://${mosip.pmp.reactjs.ui.host}/

mosip.kernel.keymanager.url=https://dev.mosip.net

pmp.partner.original.certificate.get.rest.uri=${mosip.kernel.keymanager.url}/v1/keymanager/getPartnerSignedCertificate/{partnerCertId}
pmp.ca.certificates.post.rest.uri=${mosip.kernel.keymanager.url}/v1/keymanager/getCaCertificates

Expand Down Expand Up @@ -146,4 +147,3 @@ mosip.pms.api.id.all.sbi.details.get=mosip.pms.all.sbi.details.get
mosip.pms.api.id.get.all.device.details.get=mosip.pms.get.all.device.details.get
mosip.pms.api.id.all.ca.certificates.get=mosip.pms.all.ca.certificates.get
##END properties are for PMS Revamp DP1 release

Original file line number Diff line number Diff line change
Expand Up @@ -239,6 +239,37 @@ public <T> T getApi(String apiUrl, Map<String, String> pathsegments, Class<?> re
return result;
}

/**
*
* @param <T>
* @param apiUrl
* @param pathsegments
* @param responseType
* @return
*/
@SuppressWarnings("unchecked")
public <T> T getApiWithContentType(String apiUrl, Map<String, String> pathsegments, Class<?> responseType, MediaType mediaType) {
T result = null;
UriComponentsBuilder builder = null;
if (apiUrl != null) {
builder = UriComponentsBuilder.fromUriString(apiUrl);
URI urlWithPath = builder.build(pathsegments);
RestTemplate restTemplate;
try {
restTemplate = getRestTemplate();
result = (T) restTemplate
.exchange(urlWithPath, HttpMethod.GET, setRequestHeader(null, mediaType), responseType).getBody();
} catch (Exception e) {
logger.error("Error occurred while calling {}", urlWithPath, e.getStackTrace());
throw new ApiAccessibleException(
ApiAccessibleExceptionConstant.API_NOT_ACCESSIBLE_EXCEPTION.getErrorCode(),
ApiAccessibleExceptionConstant.API_NOT_ACCESSIBLE_EXCEPTION.getErrorMessage());
}

}
return result;
}

/**
*
* @return
Expand Down

0 comments on commit f340d23

Please sign in to comment.