From 5ecc980a5532b9ee864248d8b0c656384901cde2 Mon Sep 17 00:00:00 2001 From: Keshav Mishra Date: Thu, 12 May 2022 16:04:22 +0530 Subject: [PATCH 01/23] [MOSIP-20020] Update release_changes.yml --- .github/workflows/release_changes.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release_changes.yml b/.github/workflows/release_changes.yml index cc9c2956..e75a616c 100644 --- a/.github/workflows/release_changes.yml +++ b/.github/workflows/release_changes.yml @@ -48,7 +48,7 @@ jobs: uses: peter-evans/create-pull-request@v3 with: token: ${{ secrets.ACTION_PAT }} - commit-message: Updated Pom versions for release changes + commit-message: Release Bot Pre-release changes title: Release changes body: Automated PR for ${{ github.event.inputs.releaseTags }} release. branch: release-branch From 5a10d87a1047530cf60e7368f927151017feda36 Mon Sep 17 00:00:00 2001 From: syed-salman-technoforte Date: Thu, 19 May 2022 16:39:19 +0530 Subject: [PATCH 02/23] [ MOSIP-20021 ] updated release_changes.yml to update README.md badges --- .github/workflows/release_changes.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/release_changes.yml b/.github/workflows/release_changes.yml index e75a616c..5d8e1a32 100644 --- a/.github/workflows/release_changes.yml +++ b/.github/workflows/release_changes.yml @@ -27,6 +27,11 @@ jobs: echo "BRANCH_NAME=$(echo ${{ github.ref }} | sed -e 's,.*/\(.*\),\1,')" >> $GITHUB_ENV echo "GPG_TTY=$(tty)" >> $GITHUB_ENV + - name: update Branch name in badges + run: | + sed -i 's/branch=.*)]/branch=${{ env.BRANCH_NAME }}\)]/g' README.md + sed -i 's/branch=.*\&/branch=${{ env.BRANCH_NAME }}\&/g' README.md + - name: Mannualy changing the pom versions run: find . -type f -name "*pom.xml" -print0 | xargs -0 sed -i "s/${{ github.event.inputs.snapshotTags }}/${{ github.event.inputs.releaseTags }}/g" From 902cd0421bd742dc40efdef3002220725abfd17d Mon Sep 17 00:00:00 2001 From: Keshav Mishra Date: Mon, 18 Jul 2022 10:49:33 +0530 Subject: [PATCH 03/23] [MOSIP-20028] added action for tagging --- .github/workflows/tag.yaml | 43 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 .github/workflows/tag.yaml diff --git a/.github/workflows/tag.yaml b/.github/workflows/tag.yaml new file mode 100644 index 00000000..e9bba0e6 --- /dev/null +++ b/.github/workflows/tag.yaml @@ -0,0 +1,43 @@ +name: Tagging of repos + +env: + tag: v1.2.3 + +on: + workflow_dispatch: + inputs: + tag: + description: 'Tag to be published' + required: true + default: 'v1.2.3' + type: string + body: + description: 'Release body message' + required: true + default: 'Changes in this Release' + type: string + pre-release: + description: 'Pre-release? True/False' + required: true + default: False + type: string + +jobs: + build: + name: Create Release + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v2 + - name: Create Release + id: create_release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token + with: + tag_name: ${{ github.event.inputs.tag }} + release_name: ${{ github.event.inputs.tag }} + body: | + ${{ github.event.inputs.body }} + draft: false + prerelease: ${{fromJSON(github.event.inputs.pre-release)}} From 5af3e86bae9f408e138419a8607148a704b620fd Mon Sep 17 00:00:00 2001 From: dhanendra06 Date: Wed, 17 Aug 2022 11:07:54 +0530 Subject: [PATCH 04/23] MOSIP-23596 --- src/main/java/io/mosip/print/service/impl/PrintServiceImpl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/io/mosip/print/service/impl/PrintServiceImpl.java b/src/main/java/io/mosip/print/service/impl/PrintServiceImpl.java index d8ea0a49..39f70582 100644 --- a/src/main/java/io/mosip/print/service/impl/PrintServiceImpl.java +++ b/src/main/java/io/mosip/print/service/impl/PrintServiceImpl.java @@ -211,6 +211,7 @@ public boolean generateCard(EventModel eventModel) { } String ecryptionPin = eventModel.getEvent().getData().get("protectionKey").toString(); String decodedCredential = cryptoCoreUtil.decrypt(credential); + printLogger.debug("vc is printed security valuation.... : {}",decodedCredential); if (verifyCredentialsFlag){ printLogger.info("Configured received credentials to be verified. Flag {}", verifyCredentialsFlag); boolean verified = credentialsVerifier.verifyCredentials(decodedCredential); From 238d9fb256d3df39e31ff40fbedf066924e10dfd Mon Sep 17 00:00:00 2001 From: dhanendra06 Date: Wed, 17 Aug 2022 13:33:33 +0530 Subject: [PATCH 05/23] MOSIP-23472 --- pom.xml | 6 +- .../print/service/impl/PrintServiceImpl.java | 37 ++--- .../mosip/print/util/CredentialsVerifier.java | 147 ------------------ 3 files changed, 22 insertions(+), 168 deletions(-) delete mode 100644 src/main/java/io/mosip/print/util/CredentialsVerifier.java diff --git a/pom.xml b/pom.xml index 46c58152..b32694a4 100644 --- a/pom.xml +++ b/pom.xml @@ -230,9 +230,9 @@ 2.12.0 - info.weboftrust - ld-signatures-java - 0.8.0 + io.mosip.vercred + vcverifier + 1.0-SNAPSHOT diff --git a/src/main/java/io/mosip/print/service/impl/PrintServiceImpl.java b/src/main/java/io/mosip/print/service/impl/PrintServiceImpl.java index d8ea0a49..d69a1744 100644 --- a/src/main/java/io/mosip/print/service/impl/PrintServiceImpl.java +++ b/src/main/java/io/mosip/print/service/impl/PrintServiceImpl.java @@ -31,6 +31,12 @@ import com.google.gson.Gson; import com.google.gson.GsonBuilder; +import io.mosip.print.exception.*; +import io.mosip.vercred.CredentialsVerifier; +import io.mosip.vercred.exception.ProofDocumentNotFoundException; +import io.mosip.vercred.exception.ProofTypeNotFoundException; +import io.mosip.vercred.exception.PubicKeyNotFoundException; +import io.mosip.vercred.exception.UnknownException; import org.apache.commons.codec.binary.Base64; import org.joda.time.DateTime; import org.json.simple.JSONArray; @@ -56,20 +62,6 @@ import io.mosip.print.dto.CryptoWithPinResponseDto; import io.mosip.print.dto.DataShare; import io.mosip.print.dto.JsonValue; -import io.mosip.print.exception.ApiNotAccessibleException; -import io.mosip.print.exception.ApisResourceAccessException; -import io.mosip.print.exception.CryptoManagerException; -import io.mosip.print.exception.DataShareException; -import io.mosip.print.exception.ExceptionUtils; -import io.mosip.print.exception.IdRepoAppException; -import io.mosip.print.exception.IdentityNotFoundException; -import io.mosip.print.exception.PDFGeneratorException; -import io.mosip.print.exception.PDFSignatureException; -import io.mosip.print.exception.ParsingException; -import io.mosip.print.exception.PlatformErrorMessages; -import io.mosip.print.exception.QrcodeGenerationException; -import io.mosip.print.exception.TemplateProcessingFailureException; -import io.mosip.print.exception.UINNotFoundInDatabase; import io.mosip.print.logger.LogDescription; import io.mosip.print.logger.PrintLogger; import io.mosip.print.model.CredentialStatusEvent; @@ -81,7 +73,6 @@ import io.mosip.print.spi.QrCodeGenerator; import io.mosip.print.util.AuditLogRequestBuilder; import io.mosip.print.util.CbeffToBiometricUtil; -import io.mosip.print.util.CredentialsVerifier; import io.mosip.print.util.CryptoCoreUtil; import io.mosip.print.util.CryptoUtil; import io.mosip.print.util.DataShareUtil; @@ -201,6 +192,7 @@ public class PrintServiceImpl implements PrintService{ public boolean generateCard(EventModel eventModel) { String credential = null; boolean isPrinted = false; + boolean verified=false; try { if (eventModel.getEvent().getDataShareUri() == null || eventModel.getEvent().getDataShareUri().isEmpty()) { credential = eventModel.getEvent().getData().get("credential").toString(); @@ -213,10 +205,19 @@ public boolean generateCard(EventModel eventModel) { String decodedCredential = cryptoCoreUtil.decrypt(credential); if (verifyCredentialsFlag){ printLogger.info("Configured received credentials to be verified. Flag {}", verifyCredentialsFlag); - boolean verified = credentialsVerifier.verifyCredentials(decodedCredential); - if (!verified) { + try { + verified=credentialsVerifier.verifyPrintCredentials(decodedCredential); + if (!verified) { + printLogger.error("Received Credentials failed in verifiable credential verify method. So, the credentials will not be printed." + + " Id: {}, Transaction Id: {}", eventModel.getEvent().getId(), eventModel.getEvent().getTransactionId()); + return false; + } + }catch (ProofDocumentNotFoundException | ProofTypeNotFoundException e){ + printLogger.error("Proof document is not available in the received credentials." + + " Id: {}, Transaction Id: {}", eventModel.getEvent().getId(), eventModel.getEvent().getTransactionId()); + }catch (UnknownException | PubicKeyNotFoundException e){ printLogger.error("Received Credentials failed in verifiable credential verify method. So, the credentials will not be printed." + - " Id: {}, Transaction Id: {}", eventModel.getEvent().getId(), eventModel.getEvent().getTransactionId()); + " Id: {}, Transaction Id: {}", eventModel.getEvent().getId(), eventModel.getEvent().getTransactionId()); return false; } } diff --git a/src/main/java/io/mosip/print/util/CredentialsVerifier.java b/src/main/java/io/mosip/print/util/CredentialsVerifier.java deleted file mode 100644 index 706f78f9..00000000 --- a/src/main/java/io/mosip/print/util/CredentialsVerifier.java +++ /dev/null @@ -1,147 +0,0 @@ -package io.mosip.print.util; - -import java.io.IOException; -import java.io.StringReader; -import java.net.URI; -import java.security.GeneralSecurityException; -import java.security.InvalidAlgorithmParameterException; -import java.security.InvalidKeyException; -import java.security.KeyFactory; -import java.security.NoSuchAlgorithmException; -import java.security.PublicKey; -import java.security.Signature; -import java.security.SignatureException; -import java.security.spec.InvalidKeySpecException; -import java.security.spec.MGF1ParameterSpec; -import java.security.spec.PSSParameterSpec; -import java.security.spec.X509EncodedKeySpec; -import java.text.ParseException; -import java.util.Objects; - -import com.fasterxml.jackson.databind.node.ObjectNode; -import com.nimbusds.jose.JWSObject; - -import org.bouncycastle.util.io.pem.PemObject; -import org.bouncycastle.util.io.pem.PemReader; -import org.slf4j.Logger; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpMethod; -import org.springframework.stereotype.Component; -import org.springframework.web.client.RestTemplate; - -import foundation.identity.jsonld.ConfigurableDocumentLoader; -import foundation.identity.jsonld.JsonLDException; -import foundation.identity.jsonld.JsonLDObject; -import info.weboftrust.ldsignatures.LdProof; -import info.weboftrust.ldsignatures.canonicalizer.URDNA2015Canonicalizer; -import info.weboftrust.ldsignatures.util.JWSUtil; -import io.mosip.print.constant.CredentialVerifierConstants; -import io.mosip.print.logger.PrintLogger; - -@Component -public class CredentialsVerifier { - - Logger CredVerifierLogger = PrintLogger.getLogger(CredentialsVerifier.class); - - @Autowired - private RestTemplate restTemplate; - - public boolean verifyCredentials(String credentials){ - CredVerifierLogger.info("Received Credentials Verification - Start."); - ConfigurableDocumentLoader confDocumentLoader = new ConfigurableDocumentLoader(); - confDocumentLoader.setEnableHttps(true); - confDocumentLoader.setEnableHttp(true); - confDocumentLoader.setEnableFile(false); - - JsonLDObject vcJsonLdObject = JsonLDObject.fromJson(credentials); - vcJsonLdObject.setDocumentLoader(confDocumentLoader); - - LdProof ldProofWithJWS = LdProof.getFromJsonLDObject(vcJsonLdObject); - if (Objects.isNull(ldProofWithJWS)) { - CredVerifierLogger.error("Proof document is not available in the received credentials."); - return false; - } - - String ldProofTerm = ldProofWithJWS.getType(); - if (!CredentialVerifierConstants.SIGNATURE_SUITE_TERM.equals(ldProofTerm)) { - CredVerifierLogger.error("Proof Type available in received credentials is not matching " + - " with supported proof terms. Recevied Type: {}", ldProofTerm); - return false; - } - - try { - - URDNA2015Canonicalizer canonicalizer = new URDNA2015Canonicalizer(); - byte[] canonicalHashBytes = canonicalizer.canonicalize(ldProofWithJWS, vcJsonLdObject); - CredVerifierLogger.info("Completed Canonicalization for the received credentials."); - String signJWS = ldProofWithJWS.getJws(); - JWSObject jwsObject = JWSObject.parse(signJWS); - byte[] vcSignBytes = jwsObject.getSignature().decode(); - URI publicKeyJsonUri = ldProofWithJWS.getVerificationMethod(); - PublicKey publicKeyObj = getPublicKeyFromVerificationMethod(publicKeyJsonUri); - if (Objects.isNull(publicKeyObj)) { - CredVerifierLogger.error("Public key object is null, returning false."); - return false; - } - CredVerifierLogger.info("Completed downloading public key from the issuer domain and constructed public key object."); - byte[] actualData = JWSUtil.getJwsSigningInput(jwsObject.getHeader(), canonicalHashBytes); - String jwsHeader = jwsObject.getHeader().getAlgorithm().getName(); - CredVerifierLogger.info("Performing signature verification after downloading the public key."); - return verifyCredentialSignature(jwsHeader, publicKeyObj, actualData, vcSignBytes); - } catch (IOException | GeneralSecurityException | JsonLDException | ParseException e) { - CredVerifierLogger.error("Error in doing verifiable credential verification process.", e); - } - return false; - } - - - private PublicKey getPublicKeyFromVerificationMethod(URI publicKeyJsonUri){ - - try { - ObjectNode response = restTemplate.exchange(publicKeyJsonUri, HttpMethod.GET, null, ObjectNode.class).getBody(); - String publicKeyPem = response.get(CredentialVerifierConstants.PUBLIC_KEY_PEM).asText(); - CredVerifierLogger.info("public key download completed."); - StringReader strReader = new StringReader(publicKeyPem); - PemReader pemReader = new PemReader(strReader); - PemObject pemObject = pemReader.readPemObject(); - byte[] pubKeyBytes = pemObject.getContent(); - X509EncodedKeySpec pubKeySpec = new X509EncodedKeySpec(pubKeyBytes); - KeyFactory keyFactory = KeyFactory.getInstance("RSA"); - return keyFactory.generatePublic(pubKeySpec); - } catch (IOException | NoSuchAlgorithmException | InvalidKeySpecException e) { - CredVerifierLogger.error("Error Generating public key object.", e); - } - return null; - } - - private boolean verifyCredentialSignature(String algorithm, PublicKey publicKey, byte[] actualData, byte[] signature) { - - if (algorithm.equals(CredentialVerifierConstants.JWS_RS256_SIGN_ALGO_CONST)) { - try { - CredVerifierLogger.info("Validating signature using RS256 algorithm."); - Signature rsSignature = Signature.getInstance(CredentialVerifierConstants.RS256_ALGORITHM); - rsSignature.initVerify(publicKey); - rsSignature.update(actualData); - return rsSignature.verify(signature); - } catch (NoSuchAlgorithmException | InvalidKeyException | SignatureException e) { - CredVerifierLogger.error("Error in Verifying credentials(RS256).", e); - } - } - try { - CredVerifierLogger.info("Validating signature using PS256 algorithm."); - Signature psSignature = Signature.getInstance(CredentialVerifierConstants.PS256_ALGORITHM); - - PSSParameterSpec pssParamSpec = new PSSParameterSpec(CredentialVerifierConstants.PSS_PARAM_SHA_256, CredentialVerifierConstants.PSS_PARAM_MGF1, - MGF1ParameterSpec.SHA256, CredentialVerifierConstants.PSS_PARAM_SALT_LEN, CredentialVerifierConstants.PSS_PARAM_TF); - psSignature.setParameter(pssParamSpec); - - psSignature.initVerify(publicKey); - psSignature.update(actualData); - return psSignature.verify(signature); - } catch (NoSuchAlgorithmException | InvalidKeyException | SignatureException | InvalidAlgorithmParameterException e) { - CredVerifierLogger.error("Error in Verifying credentials(PS256).", e); - } - return false; - } - -} From 1a80dc7f8e6a74665a2b7e9427b825742c805973 Mon Sep 17 00:00:00 2001 From: dhanendra06 Date: Wed, 17 Aug 2022 15:21:56 +0530 Subject: [PATCH 06/23] MOSIP-23472 --- src/main/java/io/mosip/print/PrintPDFApplication.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/java/io/mosip/print/PrintPDFApplication.java b/src/main/java/io/mosip/print/PrintPDFApplication.java index 31f72703..0465f1c9 100644 --- a/src/main/java/io/mosip/print/PrintPDFApplication.java +++ b/src/main/java/io/mosip/print/PrintPDFApplication.java @@ -1,5 +1,6 @@ package io.mosip.print; +import io.mosip.vercred.CredentialsVerifier; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration; @@ -29,6 +30,11 @@ public CbeffUtil getCbeffUtil() { return new CbeffImpl(); } + @Bean + public CredentialsVerifier credentialsVerifier() { + return new CredentialsVerifier(); + } + @Bean public ThreadPoolTaskScheduler taskScheduler() { ThreadPoolTaskScheduler threadPoolTaskScheduler = new ThreadPoolTaskScheduler(); From f0c9da90111804ec8c8d670800677cb496dedf0c Mon Sep 17 00:00:00 2001 From: Manoprabamp Date: Fri, 30 Sep 2022 15:16:26 +0530 Subject: [PATCH 07/23] print --- pom.xml | 9 + .../io/mosip/print/PrintPDFApplication.java | 1 + .../io/mosip/print/entity/MspCardEntity.java | 84 ++++++ .../print/repository/MspCardRepository.java | 10 + .../print/service/impl/PrintServiceImpl.java | 270 +++++++++++++++++- src/main/resources/bootstrap.properties | 19 +- src/main/resources/partner.p12 | Bin 2588 -> 2572 bytes src/main/resources/partner_old.p12 | Bin 0 -> 2572 bytes 8 files changed, 372 insertions(+), 21 deletions(-) create mode 100644 src/main/java/io/mosip/print/entity/MspCardEntity.java create mode 100644 src/main/java/io/mosip/print/repository/MspCardRepository.java create mode 100644 src/main/resources/partner_old.p12 diff --git a/pom.xml b/pom.xml index b32694a4..0529bc5c 100644 --- a/pom.xml +++ b/pom.xml @@ -234,6 +234,11 @@ vcverifier 1.0-SNAPSHOT + + org.postgresql + postgresql + ${postgresql.version} + @@ -255,6 +260,10 @@ false + + danubetech-maven-public + https://repo.danubetech.com/repository/maven-public/ + diff --git a/src/main/java/io/mosip/print/PrintPDFApplication.java b/src/main/java/io/mosip/print/PrintPDFApplication.java index 0465f1c9..694b8f5c 100644 --- a/src/main/java/io/mosip/print/PrintPDFApplication.java +++ b/src/main/java/io/mosip/print/PrintPDFApplication.java @@ -16,6 +16,7 @@ import io.mosip.print.spi.CbeffUtil; + @SpringBootApplication(scanBasePackages = { "io.mosip.print.*", "${mosip.auth.adapter.impl.basepackage}" }, exclude = { DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class, CacheAutoConfiguration.class }) diff --git a/src/main/java/io/mosip/print/entity/MspCardEntity.java b/src/main/java/io/mosip/print/entity/MspCardEntity.java new file mode 100644 index 00000000..197e8f29 --- /dev/null +++ b/src/main/java/io/mosip/print/entity/MspCardEntity.java @@ -0,0 +1,84 @@ +package io.mosip.print.entity; + +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import org.springframework.stereotype.Component; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + * The persistent class Processed RegPrc print List database table. + * + * @author Thamaraikannan + * @since 1.0.0 + */ + +@Component +@Entity +@NoArgsConstructor +@Getter +@Setter +@Table(name = "msp_card", schema = "print") +public class MspCardEntity implements Serializable { + /** + * The Id. + */ + @Id + @Column(name = "id") + private String id; + + /** + * The Json Data. + */ + @Column(name = "json_data") + private String jsonData; + + /** + * The Province. + */ + @Column(name = "province") + private String province; + + @Column(name = "city") + private String city; + + @Column(name = "zone") + private String zone; + + @Column(name = "agegroup") + private Integer ageGroup; + + @Column(name = "introducer") + private String introducer; + + @Column(name = "resident") + private String resident; + + @Column(name = "registration_center_id") + private String registrationCenterId; + + @Column(name = "registration_date") + private LocalDateTime registrationDate; + + @Column(name = "download_date") + private LocalDateTime downloadDate; + + @Column(name = "request_id") + private String requestId; + + @Column(name = "status") + private Integer status; + + @Column(name = "request_id1") + private String requestId1; + + @Column(name = "birthdate") + private Date birthDate; +} diff --git a/src/main/java/io/mosip/print/repository/MspCardRepository.java b/src/main/java/io/mosip/print/repository/MspCardRepository.java new file mode 100644 index 00000000..883da03a --- /dev/null +++ b/src/main/java/io/mosip/print/repository/MspCardRepository.java @@ -0,0 +1,10 @@ +package io.mosip.print.repository; + +import io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository; +import io.mosip.print.entity.MspCardEntity; +import org.springframework.stereotype.Repository; + +@Repository("mspCardRepository") +public interface MspCardRepository extends BaseRepository { + +} diff --git a/src/main/java/io/mosip/print/service/impl/PrintServiceImpl.java b/src/main/java/io/mosip/print/service/impl/PrintServiceImpl.java index 07f20696..3ea3c82c 100644 --- a/src/main/java/io/mosip/print/service/impl/PrintServiceImpl.java +++ b/src/main/java/io/mosip/print/service/impl/PrintServiceImpl.java @@ -31,7 +31,11 @@ import com.google.gson.Gson; import com.google.gson.GsonBuilder; +import io.mosip.print.constant.*; +import io.mosip.print.entity.MspCardEntity; import io.mosip.print.exception.*; +import io.mosip.print.idrepo.dto.IdResponseDTO1; +import io.mosip.print.repository.MspCardRepository; import io.mosip.vercred.CredentialsVerifier; import io.mosip.vercred.exception.ProofDocumentNotFoundException; import io.mosip.vercred.exception.ProofTypeNotFoundException; @@ -45,19 +49,11 @@ import org.json.simple.parser.ParseException; import org.slf4j.Logger; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.env.Environment; import org.springframework.stereotype.Service; -import io.mosip.print.constant.EventId; -import io.mosip.print.constant.EventName; -import io.mosip.print.constant.EventType; -import io.mosip.print.constant.IdType; -import io.mosip.print.constant.ModuleName; -import io.mosip.print.constant.PDFGeneratorExceptionCodeConstant; -import io.mosip.print.constant.PlatformSuccessMessages; -import io.mosip.print.constant.QrVersion; -import io.mosip.print.constant.UinCardType; import io.mosip.print.dto.CryptoWithPinRequestDto; import io.mosip.print.dto.CryptoWithPinResponseDto; import io.mosip.print.dto.DataShare; @@ -189,7 +185,79 @@ public class PrintServiceImpl implements PrintService{ private boolean verifyCredentialsFlag; + @Autowired + @Qualifier("mspCardRepository") + MspCardRepository mspCardRepository; + + public boolean generateCard(EventModel eventModel) { + Map byteMap = new HashMap<>(); + String decodedCrdential = null; + String credential = null; + boolean isPrinted =false; + try{ + if (eventModel.getEvent().getDataShareUri() == null || eventModel.getEvent().getDataShareUri().isEmpty()) { + credential = eventModel.getEvent().getData().get("credential").toString(); + } else { + String dataShareUrl = eventModel.getEvent().getDataShareUri(); + URI dataShareUri = URI.create(dataShareUrl); + credential = restApiClient.getApi(dataShareUri, String.class); + } + + String ecryptionPin = eventModel.getEvent().getData().get("protectionKey").toString(); + decodedCrdential = cryptoCoreUtil.decrypt(credential); + + Map proofMap = new HashMap(); + proofMap = (Map) eventModel.getEvent().getData().get("proof"); + String sign = proofMap.get("signature").toString(); + Map attributes = getDocuments(decodedCrdential, + eventModel.getEvent().getData().get("credentialType").toString(), ecryptionPin, + eventModel.getEvent().getTransactionId(), getSignature(sign, credential), "UIN", false, eventModel.getEvent().getId(), + eventModel.getEvent().getData().get("registrationId").toString(), eventModel.getEvent().getData().get("vid").toString()); + + + String printid = (String) eventModel.getEvent().getId(); + + org.json.simple.JSONObject obj = new org.json.simple.JSONObject(); + obj.put("photo",attributes.get(APPLICANT_PHOTO)); + obj.put("qrCode",attributes.get(QRCODE)); + obj.put("address", ((attributes.get("address") != null && !attributes.get("address").equals("")) ? attributes.get("address").toString() : "N/A")); + obj.put("locality", ((attributes.get("locality") != null && !attributes.get("locality").equals("")) ? attributes.get("locality").toString() : "N/A")); + obj.put("city", ((attributes.get("city") != null && !attributes.get("city").equals("")) ? attributes.get("city").toString() : "N/A")); + obj.put("state", ((attributes.get("state") != null && !attributes.get("state").equals("")) ? attributes.get("state").toString() : "N/A")); + obj.put("postalCode", ((attributes.get("postalCode") != null && !attributes.get("postalCode").equals("")) ? attributes.get("postalCode").toString() : "N/A")); + obj.put("gender", ((attributes.get("gender") != null && !attributes.get("gender").equals("")) ? attributes.get("gender").toString() : "N/A")); + obj.put("fullName", ((attributes.get("fullName") != null && !attributes.get("fullName").equals("")) ? attributes.get("fullName").toString() : "N/A")); + obj.put("dateOfBirth", ((attributes.get("dateOfBirth") != null && !attributes.get("dateOfBirth").equals("")) ? attributes.get("dateOfBirth").toString() : "N/A")); + obj.put("phone", ((attributes.get("phone") != null && !attributes.get("phone").equals("")) ? attributes.get("phone").toString() : "N/A")); + obj.put("vid", ((attributes.get("VID") != null && !attributes.get("VID").equals("")) ? attributes.get("VID").toString() : "N/A")); + obj.put("UIN", ((attributes.get("UIN") != null && !attributes.get("UIN").equals("")) ? attributes.get("UIN").toString() : "N/A")); + obj.put("email", ((attributes.get("email") != null && !attributes.get("email").equals("")) ? attributes.get("email").toString() : "N/A")); + + String woenc = obj.toJSONString(); + + MspCardEntity mspCardEntity = new MspCardEntity(); + mspCardEntity.setJsonData(woenc); + mspCardEntity.setRequestId(printid); + mspCardEntity.setStatus(90); + UUID uuid=UUID.randomUUID(); + mspCardEntity.setId(uuid.toString()); + mspCardRepository.create(mspCardEntity); + isPrinted=true; + }catch (Exception e){ + printLogger.error(e.getMessage() , e); + isPrinted = false; + } + return isPrinted; + } + private String getSignature(String sign, String crdential) { + String signHeader = sign.split("\\.")[0]; + String signData = sign.split("\\.")[2]; + String signature = signHeader + "." + crdential + "." + signData; + return signature; + } + + public boolean generateCardOl(EventModel eventModel) { String credential = null; boolean isPrinted = false; boolean verified=false; @@ -224,9 +292,9 @@ public boolean generateCard(EventModel eventModel) { } Map proofMap = new HashMap(); proofMap = (Map) eventModel.getEvent().getData().get("proof"); - byte[] pdfbytes = getDocuments(decodedCredential, - eventModel.getEvent().getData().get("credentialType").toString(), ecryptionPin, - eventModel.getEvent().getTransactionId(), "UIN", false).get("uinPdf"); +// byte[] pdfbytes = getDocuments(decodedCredential, +// eventModel.getEvent().getData().get("credentialType").toString(), ecryptionPin, +// eventModel.getEvent().getTransactionId(), "UIN", false).get("uinPdf"); isPrinted = true; }catch (Exception e){ printLogger.error(e.getMessage() , e); @@ -234,7 +302,164 @@ public boolean generateCard(EventModel eventModel) { } return isPrinted; } + private Map getDocuments(String credential, String credentialType, String encryptionPin, + String requestId, String sign, + String cardType, + boolean isPasswordProtected, String refId, String registrationId, String vid) { + printLogger.debug(LoggerFileConstant.SESSIONID.toString(), LoggerFileConstant.REGISTRATIONID.toString(), + "PrintServiceImpl::getDocuments()::entry"); + + + String credentialSubject; + Map byteMap = new HashMap<>(); + String uin = null; + LogDescription description = new LogDescription(); + String password = null; + String individualBio = null; + Map attributes = new LinkedHashMap<>(); + boolean isTransactionSuccessful = false; + IdResponseDTO1 response = null; + String template = UIN_CARD_TEMPLATE; + byte[] pdfbytes = null; + try { + + credentialSubject = getCrdentialSubject(credential); + org.json.JSONObject credentialSubjectJson = new org.json.JSONObject(credentialSubject); + org.json.JSONObject decryptedJson = decryptAttribute(credentialSubjectJson, encryptionPin, credential); + individualBio = decryptedJson.getString("biometrics"); + String individualBiometric = new String(individualBio); + uin = decryptedJson.getString("UIN"); + if (isPasswordProtected) { + password = getPassword(uin); + } + + boolean isPhotoSet = setApplicantPhoto(individualBiometric, attributes); + if (!isPhotoSet) { + printLogger.debug(LoggerFileConstant.SESSIONID.toString(), + LoggerFileConstant.REGISTRATIONID.toString(), uin + + PlatformErrorMessages.PRT_PRT_APPLICANT_PHOTO_NOT_SET.name()); + } + setTemplateAttributes(decryptedJson.toString(), attributes); + attributes.put(IdType.UIN.toString(), uin); + attributes.put(IdType.VID.toString(), vid); + + byte[] textFileByte = createTextFile(decryptedJson.toString()); + byteMap.put(UIN_TEXT_FILE, textFileByte); + + boolean isQRcodeSet = setQrCode(decryptedJson.toString(), attributes); + if (!isQRcodeSet) { + printLogger.debug(LoggerFileConstant.SESSIONID.toString(), + LoggerFileConstant.REGISTRATIONID.toString(), uin + + PlatformErrorMessages.PRT_PRT_QRCODE_NOT_SET.name()); + } + + + printStatusUpdate(requestId, credentialType, uin, refId, registrationId); + isTransactionSuccessful = true; + + } catch (VidCreationException e) { + e.printStackTrace(); + description.setMessage(PlatformErrorMessages.PRT_PRT_VID_CREATION_ERROR.getMessage()); + description.setCode(PlatformErrorMessages.PRT_PRT_VID_CREATION_ERROR.getCode()); + printLogger.error(LoggerFileConstant.SESSIONID.toString(), LoggerFileConstant.REGISTRATIONID.toString(), + "UIN", PlatformErrorMessages.PRT_PRT_QRCODE_NOT_GENERATED.name() + e.getMessage() + + ExceptionUtils.getStackTrace(e)); + throw new PDFGeneratorException(e.getErrorCode(), e.getErrorText()); + + } + + catch (QrcodeGenerationException e) { + e.printStackTrace(); + description.setMessage(PlatformErrorMessages.PRT_PRT_QR_CODE_GENERATION_ERROR.getMessage()); + description.setCode(PlatformErrorMessages.PRT_PRT_QR_CODE_GENERATION_ERROR.getCode()); + printLogger.error(LoggerFileConstant.SESSIONID.toString(), LoggerFileConstant.REGISTRATIONID.toString(), + "UIN", + PlatformErrorMessages.PRT_PRT_QRCODE_NOT_GENERATED.name() + ExceptionUtils.getStackTrace(e)); + throw new PDFGeneratorException(PDFGeneratorExceptionCodeConstant.PDF_EXCEPTION.getErrorCode(), + e.getErrorText()); + + } catch (UINNotFoundInDatabase e) { + e.printStackTrace(); + description.setMessage(PlatformErrorMessages.PRT_PRT_UIN_NOT_FOUND_IN_DATABASE.getMessage()); + description.setCode(PlatformErrorMessages.PRT_PRT_UIN_NOT_FOUND_IN_DATABASE.getCode()); + + printLogger.error(LoggerFileConstant.SESSIONID.toString(), LoggerFileConstant.REGISTRATIONID.toString(), + "UIN".toString(), + PlatformErrorMessages.PRT_PRT_UIN_NOT_FOUND_IN_DATABASE.name() + ExceptionUtils.getStackTrace(e)); + throw new PDFGeneratorException(PDFGeneratorExceptionCodeConstant.PDF_EXCEPTION.getErrorCode(), + e.getErrorText()); + } catch (TemplateProcessingFailureException e) { + e.printStackTrace(); + description.setMessage(PlatformErrorMessages.PRT_TEM_PROCESSING_FAILURE.getMessage()); + description.setCode(PlatformErrorMessages.PRT_TEM_PROCESSING_FAILURE.getCode()); + + printLogger.error(LoggerFileConstant.SESSIONID.toString(), LoggerFileConstant.REGISTRATIONID.toString(), + "UIN", + PlatformErrorMessages.PRT_TEM_PROCESSING_FAILURE.name() + ExceptionUtils.getStackTrace(e)); + throw new TemplateProcessingFailureException(PlatformErrorMessages.PRT_TEM_PROCESSING_FAILURE.getMessage()); + + } catch (PDFGeneratorException e) { + e.printStackTrace(); + description.setMessage(PlatformErrorMessages.PRT_PRT_PDF_NOT_GENERATED.getMessage()); + description.setCode(PlatformErrorMessages.PRT_PRT_PDF_NOT_GENERATED.getCode()); + + printLogger.error(LoggerFileConstant.SESSIONID.toString(), LoggerFileConstant.REGISTRATIONID.toString(), + "UIN", + PlatformErrorMessages.PRT_PRT_PDF_NOT_GENERATED.name() + ExceptionUtils.getStackTrace(e)); + throw new PDFGeneratorException(PDFGeneratorExceptionCodeConstant.PDF_EXCEPTION.getErrorCode(), + e.getErrorText()); + + } catch (PDFSignatureException e) { + e.printStackTrace(); + description.setMessage(PlatformErrorMessages.PRT_PRT_PDF_SIGNATURE_EXCEPTION.getMessage()); + description.setCode(PlatformErrorMessages.PRT_PRT_PDF_SIGNATURE_EXCEPTION.getCode()); + + printLogger.error(LoggerFileConstant.SESSIONID.toString(), LoggerFileConstant.REGISTRATIONID.toString(), + "UIN".toString(), + PlatformErrorMessages.PRT_PRT_PDF_SIGNATURE_EXCEPTION.name() + ExceptionUtils.getStackTrace(e)); + throw new PDFSignatureException(PlatformErrorMessages.PRT_PRT_PDF_SIGNATURE_EXCEPTION.getMessage()); + + } catch (Exception ex) { + ex.printStackTrace(); + description.setMessage(PlatformErrorMessages.PRT_PRT_PDF_GENERATION_FAILED.getMessage()); + description.setCode(PlatformErrorMessages.PRT_PRT_PDF_GENERATION_FAILED.getCode()); + printLogger.error(LoggerFileConstant.SESSIONID.toString(), LoggerFileConstant.REGISTRATIONID.toString(), + "UIN", description + ex.getMessage() + ExceptionUtils.getStackTrace(ex)); + throw new PDFGeneratorException(PDFGeneratorExceptionCodeConstant.PDF_EXCEPTION.getErrorCode(), + ex.getMessage() + ExceptionUtils.getStackTrace(ex)); + + } finally { + String eventId = ""; + String eventName = ""; + String eventType = ""; + if (isTransactionSuccessful) { + description.setMessage(PlatformSuccessMessages.RPR_PRINT_SERVICE_SUCCESS.getMessage()); + description.setCode(PlatformSuccessMessages.RPR_PRINT_SERVICE_SUCCESS.getCode()); + + eventId = EventId.RPR_402.toString(); + eventName = EventName.UPDATE.toString(); + eventType = EventType.BUSINESS.toString(); + } else { + description.setMessage(PlatformErrorMessages.PRT_PRT_PDF_GENERATION_FAILED.getMessage()); + description.setCode(PlatformErrorMessages.PRT_PRT_PDF_GENERATION_FAILED.getCode()); + + eventId = EventId.RPR_405.toString(); + eventName = EventName.EXCEPTION.toString(); + eventType = EventType.SYSTEM.toString(); + } + /** Module-Id can be Both Success/Error code */ + String moduleId = isTransactionSuccessful ? PlatformSuccessMessages.RPR_PRINT_SERVICE_SUCCESS.getCode() + : description.getCode(); + String moduleName = ModuleName.PRINT_SERVICE.toString(); + auditLogRequestBuilder.createAuditRequestBuilder(description.getMessage(), eventId, eventName, eventType, + moduleId, moduleName, uin); + } + printLogger.debug(LoggerFileConstant.SESSIONID.toString(), LoggerFileConstant.REGISTRATIONID.toString(), "", + "PrintServiceImpl::getDocuments()::exit"); + + return attributes; + } /* * (non-Javadoc) * @@ -242,7 +467,7 @@ public boolean generateCard(EventModel eventModel) { * getDocuments(io.mosip.registration.processor.core.constant.IdType, * java.lang.String, java.lang.String, boolean) */ - private Map getDocuments(String credential, String credentialType, String encryptionPin, + private Map getDocumentsOld(String credential, String credentialType, String encryptionPin, String requestId, String cardType, boolean isPasswordProtected) { @@ -693,6 +918,25 @@ private void printStatusUpdate(String requestId, byte[] data, String credentialT webSubSubscriptionHelper.printStatusUpdateEvent(topic, creEvent); } + + private void printStatusUpdate(String requestId, String credentialType, String uin, String printRefId, String registrationId) + throws DataShareException, ApiNotAccessibleException, IOException, Exception { + CredentialStatusEvent creEvent = new CredentialStatusEvent(); + LocalDateTime currentDtime = DateUtils.getUTCCurrentDateTime(); + StatusEvent sEvent = new StatusEvent(); + sEvent.setId(UUID.randomUUID().toString()); + sEvent.setRequestId(requestId); + sEvent.setStatus("printing"); + sEvent.setUrl(""); + sEvent.setTimestamp(Timestamp.valueOf(currentDtime).toString()); + creEvent.setPublishedOn(new DateTime().toString()); + creEvent.setPublisher("PRINT_SERVICE"); + creEvent.setTopic(topic); + creEvent.setEvent(sEvent); + webSubSubscriptionHelper.printStatusUpdateEvent(topic, creEvent); + } + + public org.json.JSONObject decryptAttribute(org.json.JSONObject data, String encryptionPin, String credential) throws ParseException { diff --git a/src/main/resources/bootstrap.properties b/src/main/resources/bootstrap.properties index 2c439ba6..60f504b3 100644 --- a/src/main/resources/bootstrap.properties +++ b/src/main/resources/bootstrap.properties @@ -1,11 +1,14 @@ -#spring.cloud.config.uri=localhost -#spring.cloud.config.label=develop -spring.profiles.active=local1 -#spring.cloud.config.name=print -spring.application.name=print +spring.cloud.config.uri=localhost +spring.cloud.config.label=develop +spring.profiles.active=default +spring.cloud.config.name=cardprint +spring.application.name=cardprint management.endpoint.health.show-details=always management.endpoints.web.exposure.include=info,health,refresh -server.port=8088 -server.servlet.context-path=/v1/print -health.config.enabled=false \ No newline at end of file +server.port=8089 +server.servlet.path=/v1/cardprint +health.config.enabled=false + + +mosip.auth.adapter.impl.basepackage=io.mosip.kernel.auth.defaultadapter++ \ No newline at end of file diff --git a/src/main/resources/partner.p12 b/src/main/resources/partner.p12 index e36aa5d8b98c428ffda98e7f6f3617afb5fde281..64be780801f2ed968a65fc4d4df25e22dce8c4d0 100644 GIT binary patch delta 2459 zcmV;M31s%16pR!=FoFsQ0s#Xsf(gzB2`Yw2hW8Bt2LYgh3BLq_3A-?Y3AZqU1WyJD zDuzgg_YDCD2B3ljKrn&?JOTj#FoFa%kw6`Pgt@`ZsHw>D0s;sCfPw@FJa>HZ3l-ms z8QZ~&Saq{&KQSPf(BQldt^QN0s{cBJ-B7?2RN+0g+LM>RcZJLNeFB52b^iY?dP}WG zv%cm`JiWIdGE%jmLOVM`(jFkrAMJUs7n+1lTb;1#l4~88H<#4xHBS^Eba%cKf_ z2WGV8+vZ4a2hW!{T&dTyV%-zXj98^5b_%@nrwmCq%<+BtHtE8oqLqAsI-$4nkD~4mmY^t=fTqCn(%> zZQIKzhXgAh+;RD#y{Mr;X=4v3x<(}J0AW7WIz|IE`jW)vda1bnapq>mUG%5C=i%PO zH^L;1q2zT?S&lkp`O77ViDPuHW;`NgvwR^h*mZT^hy8p)1%(nIhlhTEg%X)mEt_!t z8vnm93-6ZNDG|=m1(p%yZq|K&WYLbbjVh-a?|RC}N>kO@nF1gigG=4KN1~dfZBVKQ z^ATM_SE9*9hYuRNI{|@RDmv4~?fxJdx~=@eX3s5B4VAeb8_wsgn@y_;2A$yiVH{eW`!2173gZ&H7fh@iIw&u@_z?G`@mE zA+by{#lYH%Y>_ z(JTE&=W7oo)GJ<18;wgg(EnU;C*EhrI>gvD!1hO8)({=bA6nE9FW$u)wQY$9=+o!al&oeYq_&diCd0Np` zF>5&DI3LUrvr)Qqsip7dp5>B{D56_qZ?Am&t|_^NUmdz$YS7vm(q)HQht+s`>wJ-F zQ~;{1rZ7MN`t3Nd{`YeIeRxaCr}FIo@|%s8B1|v0rbeBy`g$pUuSSEQn81Yqhi?_W zNXN4of+6zAiCp1-9aPb2EW4OJK(_g@)Usrdwrw0_SQHouDMF6Earw49S1*dFwpO%+ zBJ7q2ZH0KxYzjrJ^Dr$O@y(_u}XU;G-<2k!IqWJ*o!e`l(W00-@O$1&t&(40!NA1TAbX z`Ok6O$(!3TB*qj9y^%#zHfh}d=2?V>t^IXe#3N^1)J*phIcTA_#I6{QX5$|$XKLhj zKo$e@s!ZQ5XB>5W#PSHF*bh3jf0oxFHO~^+86F6@`dsm2GVb45K#U$+<1yN2q`*rO zu)l4YIx44j<8qoWs@5T6L)s&yFcs?VX2`p;k+fsd?A}MV9-4lS*uxy}UF_SmE#m=) zto4Q)231xA!dVXupH8!|dM)un&`C-W!X;x@u9N4b?{9Q2vvjuNw&_x@S)y?J_(vI?sKpJnY3k8}5f8>dkus{nnHQmZ^ zr&hVtYq%779gkc+=%?G~4|vUJRNP8sYYjQ%Hbal+vBR+?J4e*w5>4c9dLPEcerF~$ z6Ie%;(Qh2yDgGBdVv6 z`^)Ly`XQoQ@Hgy8f4s7b$cP5c!dVGYPfa(1nq&h(0m|p|37!ZgF{YmhCy_5t( zXV6ME{D12+%Vq~}tuJw9QrSkYKX3>hAC7+N?1>N|Y3o4Zg?!e-%`~dpHqIv@FHahb z_b@p)Mq{0@#an`pEy-Qf>9$!nb;-^qaW*#%qyz{y0oB6re_%`wqw%6UrZ$JbE*;k} zZ#NrfoEZ=~$cc$Fym+LUXqHFI+py8{4q|BR?p zfr-0cP)1-QCp$1}2xwg2_tN0%QICvnb8Bz0MH{!^(w$K+)R8!3jT>r2t~4V9*lf38 zDbABGK>RsCe=g58Ek;Xt&G9ZerW!nm*DDl7u)AEvonT^k+FLTS354U|P*su9ov$trT{J(QOB*L$G9pSJ4E+tFuz^YnJ$1~*S45`)i_tl3O32I;iqc7FwQT05? zXU)%@VTq!v1L(6!a`vI|%NIdg4!mQfMqSDT$l!TuKmOd8(zlX$z1DcU8{14ehVEH6 ze^K_=R_&G&m%BQ_1lYW-~0lmdM)F)$%82?hl#4g&%j1povT8A0~_))l^;kxDmk Z?O;fL|7WqN1PGHbY0{JPaHawR2ml`)vr_;7 delta 2475 zcmV;c2~_rs6r2=5FoFsg0s#Xsf(hOR2`Yw2hW8Bt2LYgh3C{$A3Cl2o3CA#k1YZUT zDuzgg_YDCD2B3ljP%wf7OacJ_FoFa{kw6`P^4a;z+Rf+n0s;sCfPw@V*0P|gA1N5?bI z16F@jIL#W*LdyMD?x8|rv-F> z+rq*hZh=}*yMc$?#bpwocl@4-K0vzk)YL3V? zil*@8jnH(tJL5?P(|nK+*8RDo$gv?oc>@1B6lDC7kQyq4M_A9GmpAactEv^KJ>Nl1DqSbf@6mViN999{z z9L$4XS96E?d1n%B7Z$XjXSI-jy;lGJb7Qe(!Pfns!KFe(JKqzRUR%Tno2#YTs?pdI zU14TNc99VWgOf0%2lq!`ui7-m+?=s**<2seib8QuC6_OLZL{Pj59YluV>d)(vtALH z&V728ljQYNZWZ=)>+x`WrdG3HSN>6!KoeU&fxJ>7O`pMoh=Jb2zW?-p0^kIFd?geY zMU@0J2|5rzPgvCt$kid!dZ8iE-Jk%_eNE8+!HX?{_pC zplHOY8*o_pq^zrxQalsZfV~gg;@yi0bY8t{tl~ zVBOFs@zpy~xcI=m=B{dg3NfM7j>pmIEiTfVyv9ChNa{j1JI$gc@9#_zVQw0gjZb}NSaT1@F$;i6{-2zQ&+EpN| zp|D9L%qtZ5TT*=As>lNYnGqRYeBVq@?B6E-k@H{q%kQ16!nTNiV{9WAiKhY^5W{Bc zo7E*X)PzJDk~9V*7B2BtbF43%@6N3Ms;XuToH9?4)&k8_9Tledv4S{L`n^J}dI-(CmWK6-EEds`3o!}#R-h|hI z=)y|>V}@P^L@P8f-d;%8E_=l2eAr$VJfU1GVy;!v`O=-8{d+8(M2UbeRn# zW_-)Y#d&5+Ko+oUwgkC`))ZG#E#yg$JKw+Mb8MC&vl793L{zHDOelfsdx#=dD;6oH z(yd?f`U#Mkj6gnTuA$hQ71|tigH+;t$P=%&lGe)fbA$-pf4I}|T>g|CPD!@~EAVjI zd^i1}PqM@(_+Oe2_~3}rLUm;>-F-M46dzNhm1q1+r8OFFNJO2f)xdgQD`x013ytRn z$T?@B$%|kO_CR0z`Tu{@)3vPe7C${AcfXDklWHLO7XrtKarKvSAs&nZ!rABbR)n9A z#reGrak*pUe?PTd4dowAswiC%eFUYHZ!B|nr{*9^`D8FtPLp+|TG)msfh~1{To|M? zfo*N^q|YMXzwS}~`1l8jcy5HSRs{Cfddu_=O~jlYMi9IpAGAuct2GpGUs8%!JTQtH z-Kq@efcy-HspCvPw)4QGvT`apR|_FwEYejkIF5s?e;TTxFZACP2;pS+!A^m_+-vedv|Xy)Ge}g&5&Mc%K{5sD=XFZ^G3otj zOw!+zVU_}mXC0mEs2ie+4uglI%~H1%yDIAVVlT1d2(*!H!VsYzGq6{=wVXcHb6pG) z15MXOf8)~oRw167FBy&~WeM_k6{B4?eX))xAdi@YjqQz!0r^BG1p(j+nQ2p zupTMw(2vcgPORvxd&~&AMz~J7Bo-{h3I4|D_Xw@tmXG#J|#}`B&N}4fNv!aMimT5Z9U$e1Q>>6x$;&>Vw~2rU4U!6RTGpIj~YN6fgLu7ipJbq ze;M)>KUN#?@2YJBA!gHa5<9#8vS{)Y1=4rSK95#)b(Yo-KnFzSpq2^go3Uly+YKF% zQyiPf!HI#;0`kvWN!YC0@WKW?c11G7c|YXYOU+f=mJ3MRpR+79gKGP#1;3g%1NgX8 zpkxsuzzY7NG4l9wEP{1xguhP1eOk&Rf0E7FzOQe_V)4aH!-(}fz7d7Q>^hBv@3!+f zp5o%pPAgBBN%yF;#sY#g2c&2^mzwUG-M%L)=}xb^lY))h0xixcR{^mT^;?iBbO zK)klw2TJ0wI2iXlo$sWdHuSiLHffMUn14+~CFOxibOOeGgFMMx!ab|IYcG?* zFdF9A2&>H%83azdAEX7kT8!kTe%2bwkeD+ZRq%DgZZgS=&E0Yo-upwy757tY+8FDz zzuP_VdSO;WPA*QZ?D7Unb>kj#Vam}w#3BN)=s&dcha1(r3tTy{E$rh&-$qpv0GNrG zFTrSPd1x4k+|I&`-*kbp{JbM!OW*jsn@o>6A-Q>zO^67ZFEKoPtKk86S@wBKXGDi* zlHsAe#V(2p7!3%k3H_6k2{K1R?4`&pbaCNgPZ1`w;@^^It#My4F)$%82?hl#4g&%j p1povTOPy4aPj=N?n!DA_J5bD^@5Lq51PJynQYp9GQ5FIM2moTAxQhS) diff --git a/src/main/resources/partner_old.p12 b/src/main/resources/partner_old.p12 new file mode 100644 index 0000000000000000000000000000000000000000..64be780801f2ed968a65fc4d4df25e22dce8c4d0 GIT binary patch literal 2572 zcmY+^cQhM{9tZG{1hFZ#V^wRE#Ekj4_TE*yYL-wjo0@Ix*0`umYb&i8V#TOEYF;~P zRI06_LNBGnbd%?>XN;KX42!4J8E-j)6>4LB!+r<4+hUs40pukRA{Q z(s>oP!Z9GTe=4eC3`pZDQl+E-Ts`@J8VWcs745$l=qae+j3AoW_IDGnt4Bzblr(@R z7!Zx>qliN~_Vwpngm=$vL$FA7X@T774LoBl*{Y`IQaR>>dG9srO*Py~W=_wexbdHn zlrhyIS?{PgxeypiOQNvCKk}n65Gq)>m z#+tp0a4Q@yr=|96{zTZ;e@H!*qv%+@h;{vNZ6evWLL`(He^f zrxwys{is$VjTETEJ830z`P*^B5XWN<`Yd!9qnI)3!9btxLW3$TocbkbjJrE9Q;vf5Sw;R)~4&57jfcyWNSJnl}pJfbehgG+c1GYVf zoPJc{KX0xLAo^~kln_JA?NXIJPsc@)lH7vpJynG~un~f=rI3*Igo_AGa2%^ZLPFG& zIMzIC$pX{`_hk=^?tAu%7|Y}gIGcs|a3RutCbcC+yo&pK*w~1n)%sec8m{3 z*r{L-1KxQR>JJyn#RYdX99lS#T(iG-1$meJ^xrhXn-bU~tD_r$&e6LQXEr#Jj6oxZ zvxrc@h?LHx0M#i{O|o?uRwLhE22I=eu7&n29kSJ{^J`V8pX zdm_tDad$@ILhmz@Nn}pK*@P#>NMZWY5p`?LYgl<;Nxt`3&v}8FZ=BzLjv2N#$kQtN z2^+iMvz}eR>>8MVd-&Rq&DtnVK(A{qA0%{M7C*g*ethjsm!-tbUxcdWk||j^%bzO4 z%#ZD7?nomQKPvLSXTe%@1Xovl|NQb(Mw)1;gPVVS#IHKB_PBd|9nL<}E8Mdl3HAx| z=&)}Q=|0wgnzxm34Zzu+Vgvak@FEgzG*)%EdwE!pk}YHmYpv8RYCH=QtJjSw&h3o@ zB>1y;>knhOFoK68NsgP*eAYAGw>xvyG;pVlb4~8Q>Vw$Pl0jD_CyRc`k zaW>7dLc7`2esSn2Us|2FM>4jf0H$||lbZ<4utk2EnQxVKm{$I+SEGq>rrSi4o(XJI z`h5K@N)*C@1v*qH*=!Yrqg*iAPb@ik$KODdT=}^)AhY?x|$}4a7ub|oaKV5)->w+w};Llf8$p2dx5C$|tTlW6s z;}`Ho+3m`7&yV?PHB`j2YD;Izl4VYC$_)fP`am5d=__?Q6|g#5K#;yM#75hdu4AR( zy?VKA7aL!D5#l%??BzITe8Q^qpaeHi$C>K6#edt&hZw4H9e7k@ye{R%8xk>aNK?MV zq}-CdC@4S0y37ToX*+WyxykIW+i4_29k!%byvloxSQ~o$@|4A^Lbn3*VKobaZdxnC z6>#>Qeb153ru1gF+1)ig95g>FZK&n8gJNvP-)_*KJ~4w+UHDnX%i2?Ixmo1U?XFCX*tChwG$LX|zl zb}RAj5%+}~_m1#idS}1KKG*_s#Wm^G1vT*Uu?^4~xxsx;y3-SfLN^R9`JB|6}gN282+vF7XW zS0iUiLGk<|t-6V@iLpg{>fnvVzz{Qxcj8v*psgTes#kUCeNAP$Raxp87Bqhn>(U z`fXscXiv~NF)D2SsI2ne}Mer@$Msq>z>u8Z(36*!XSf#dqg?8c5oTJpmn zq<^ChPwU2Pkp*lnUC}*-$49$PP8hi4+v*}VnF-T4SJIH0l9$vqLQjySlq(JKxzSV-*FhByuGdXvX~>g&UTl(BzaQp||HX4yNQ@UWucwpem7qX9bPmTOu1> z{|MALn1Y4uASYd|m6b7im1k??dB>A;;QVs+kEgf!0an*$@>twPsn3^cOw z*hihbnlsy)f$myBck&R7mE-sA5YZOLi#E-&;jcdNsN)t-Q)Ea@0Tk>DiR^le$OSU( zsN9==!dS)o+&KGsT81qey)|oTZ8+b5b%d}q1XummHJk{b*Fv2p!&e6hgZU6gK!K<&Bc WM_qa~z6Q}`!o6oRk5H9=Bl;Hx0mgIy literal 0 HcmV?d00001 From 26445142bb6f123e5ab5842c1f36cc9b238c01b6 Mon Sep 17 00:00:00 2001 From: Manoprabamp Date: Fri, 30 Sep 2022 15:27:16 +0530 Subject: [PATCH 08/23] MEC --- src/main/resources/bootstrap.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/bootstrap.properties b/src/main/resources/bootstrap.properties index 60f504b3..427a874b 100644 --- a/src/main/resources/bootstrap.properties +++ b/src/main/resources/bootstrap.properties @@ -11,4 +11,4 @@ server.servlet.path=/v1/cardprint health.config.enabled=false -mosip.auth.adapter.impl.basepackage=io.mosip.kernel.auth.defaultadapter++ \ No newline at end of file +mosip.auth.adapter.impl.basepackage=io.mosip.kernel.auth.defaultadapter \ No newline at end of file From 0b1d37d4c8e61898d5f51b325a27d5369b5302a4 Mon Sep 17 00:00:00 2001 From: Manoprabamp Date: Thu, 6 Oct 2022 15:37:37 +0530 Subject: [PATCH 09/23] MEC --- src/main/java/io/mosip/print/PrintPDFApplication.java | 9 ++++++--- src/main/java/io/mosip/print/config/PrintConfig.java | 7 ++++++- src/main/java/io/mosip/print/util/RestApiClient.java | 2 +- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/main/java/io/mosip/print/PrintPDFApplication.java b/src/main/java/io/mosip/print/PrintPDFApplication.java index 694b8f5c..684293ed 100644 --- a/src/main/java/io/mosip/print/PrintPDFApplication.java +++ b/src/main/java/io/mosip/print/PrintPDFApplication.java @@ -6,6 +6,7 @@ import org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration; +import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Primary; import org.springframework.scheduling.annotation.EnableAsync; @@ -15,11 +16,13 @@ import io.mosip.print.service.impl.CbeffImpl; import io.mosip.print.spi.CbeffUtil; - - -@SpringBootApplication(scanBasePackages = { "io.mosip.print.*", "${mosip.auth.adapter.impl.basepackage}" }, exclude = { DataSourceAutoConfiguration.class, +@SpringBootApplication(exclude = { SecurityAutoConfiguration.class, DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class, CacheAutoConfiguration.class }) +// +//@SpringBootApplication(scanBasePackages = { "io.mosip.print.*", "${mosip.auth.adapter.impl.basepackage}" }, exclude = { DataSourceAutoConfiguration.class, +// HibernateJpaAutoConfiguration.class, +// CacheAutoConfiguration.class }) @EnableScheduling @EnableAsync public class PrintPDFApplication { diff --git a/src/main/java/io/mosip/print/config/PrintConfig.java b/src/main/java/io/mosip/print/config/PrintConfig.java index c4fb5d7a..d143bf68 100644 --- a/src/main/java/io/mosip/print/config/PrintConfig.java +++ b/src/main/java/io/mosip/print/config/PrintConfig.java @@ -1,9 +1,11 @@ package io.mosip.print.config; +import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.TaskScheduler; import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler; +import org.springframework.web.client.RestTemplate; @Configuration @@ -16,6 +18,9 @@ public TaskScheduler taskScheduler() { threadPoolTaskScheduler.setThreadNamePrefix("ThreadPoolTaskScheduler"); return threadPoolTaskScheduler; } - +// @Bean +// public RestTemplate restTemplate() { +// return new RestTemplate(); +// } } diff --git a/src/main/java/io/mosip/print/util/RestApiClient.java b/src/main/java/io/mosip/print/util/RestApiClient.java index 636020d7..bca8f668 100644 --- a/src/main/java/io/mosip/print/util/RestApiClient.java +++ b/src/main/java/io/mosip/print/util/RestApiClient.java @@ -40,7 +40,7 @@ public class RestApiClient { /** The builder. */ @Autowired - @Qualifier("selfTokenRestTemplate") +// @Qualifier("selfTokenRestTemplate") private RestTemplate restTemplate; @Autowired From 06625ada757a428148bd4626e536e4926317ca88 Mon Sep 17 00:00:00 2001 From: Muralitharan K Date: Fri, 7 Oct 2022 16:44:38 +0530 Subject: [PATCH 10/23] Card print service upgradation. --- pom.xml | 19 +- .../io/mosip/print/PrintPDFApplication.java | 8 +- .../io/mosip/print/config/PrintConfig.java | 7 +- .../java/io/mosip/print/constant/ApiName.java | 3 + src/main/java/io/mosip/print/dto/Errors.java | 6 +- .../print/dto/PDFSignatureRequestDto.java | 5 - .../java/io/mosip/print/dto/PrintRequest.java | 1 - .../io/mosip/print/dto/VidResponseDTO.java | 2 - .../mosip/print/entity/BiometricRecord.java | 6 - .../print/entity/SingleAnySubtypeType.java | 1 - .../exception/PlatformErrorMessages.java | 8 +- .../impl/PrintRestClientServiceImpl.java | 2 - .../print/service/impl/PrintServiceImpl.java | 226 ++---------------- .../service/impl/UinCardGeneratorImpl.java | 2 - .../io/mosip/print/util/RestApiClient.java | 12 +- .../print/util/WebSubSubscriptionHelper.java | 7 +- .../resources/application-local1.properties | 12 + src/main/resources/bootstrap.properties | 8 +- 18 files changed, 69 insertions(+), 266 deletions(-) diff --git a/pom.xml b/pom.xml index 0529bc5c..0749d45f 100644 --- a/pom.xml +++ b/pom.xml @@ -40,6 +40,7 @@ 1.4.2 2.8.4 1.2.0.1-SNAPSHOT + 1.2.0.1-SNAPSHOT 7.1.0 2.0.0 5.5.13 @@ -50,6 +51,7 @@ 1.66 3.8.1 3.3.3 + 42.2.2 @@ -208,7 +210,16 @@ kernel-websubclient-api ${kernel.websub.version} - + + io.mosip.kernel + kernel-auth-adapter + ${project.version} + + + io.mosip.kernel + kernel-dataaccess-hibernate + ${kernel.dataaccess.version} + com.fasterxml.jackson.core jackson-core @@ -230,9 +241,9 @@ 2.12.0 - io.mosip.vercred - vcverifier - 1.0-SNAPSHOT + info.weboftrust + ld-signatures-java + 0.8.0 org.postgresql diff --git a/src/main/java/io/mosip/print/PrintPDFApplication.java b/src/main/java/io/mosip/print/PrintPDFApplication.java index 684293ed..8cebd3b2 100644 --- a/src/main/java/io/mosip/print/PrintPDFApplication.java +++ b/src/main/java/io/mosip/print/PrintPDFApplication.java @@ -1,6 +1,5 @@ package io.mosip.print; -import io.mosip.vercred.CredentialsVerifier; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration; @@ -16,7 +15,7 @@ import io.mosip.print.service.impl.CbeffImpl; import io.mosip.print.spi.CbeffUtil; -@SpringBootApplication(exclude = { SecurityAutoConfiguration.class, DataSourceAutoConfiguration.class, +@SpringBootApplication(scanBasePackages = { "io.mosip.print.*", "${mosip.auth.adapter.impl.basepackage}" }, exclude = { SecurityAutoConfiguration.class, DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class, CacheAutoConfiguration.class }) // @@ -34,11 +33,6 @@ public CbeffUtil getCbeffUtil() { return new CbeffImpl(); } - @Bean - public CredentialsVerifier credentialsVerifier() { - return new CredentialsVerifier(); - } - @Bean public ThreadPoolTaskScheduler taskScheduler() { ThreadPoolTaskScheduler threadPoolTaskScheduler = new ThreadPoolTaskScheduler(); diff --git a/src/main/java/io/mosip/print/config/PrintConfig.java b/src/main/java/io/mosip/print/config/PrintConfig.java index d143bf68..c4fb5d7a 100644 --- a/src/main/java/io/mosip/print/config/PrintConfig.java +++ b/src/main/java/io/mosip/print/config/PrintConfig.java @@ -1,11 +1,9 @@ package io.mosip.print.config; -import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.TaskScheduler; import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler; -import org.springframework.web.client.RestTemplate; @Configuration @@ -18,9 +16,6 @@ public TaskScheduler taskScheduler() { threadPoolTaskScheduler.setThreadNamePrefix("ThreadPoolTaskScheduler"); return threadPoolTaskScheduler; } -// @Bean -// public RestTemplate restTemplate() { -// return new RestTemplate(); -// } + } diff --git a/src/main/java/io/mosip/print/constant/ApiName.java b/src/main/java/io/mosip/print/constant/ApiName.java index 13c9c477..2e9673fa 100644 --- a/src/main/java/io/mosip/print/constant/ApiName.java +++ b/src/main/java/io/mosip/print/constant/ApiName.java @@ -100,6 +100,9 @@ public enum ApiName { NGINXDMZURL, IDSCHEMAURL, + CREDENTIALDATAREQUEST, + CREDENTIALDATAREQUESTGENERATOR, + EMAIL_NOTIFICATION } diff --git a/src/main/java/io/mosip/print/dto/Errors.java b/src/main/java/io/mosip/print/dto/Errors.java index b3fd2909..cce68093 100644 --- a/src/main/java/io/mosip/print/dto/Errors.java +++ b/src/main/java/io/mosip/print/dto/Errors.java @@ -1,12 +1,12 @@ package io.mosip.print.dto; -import lombok.Data; -import lombok.Getter; -import lombok.Setter; +import lombok.*; @Data @Getter @Setter +@AllArgsConstructor +@NoArgsConstructor public class Errors { String errorCode; String message; diff --git a/src/main/java/io/mosip/print/dto/PDFSignatureRequestDto.java b/src/main/java/io/mosip/print/dto/PDFSignatureRequestDto.java index c64b2636..e92082fb 100644 --- a/src/main/java/io/mosip/print/dto/PDFSignatureRequestDto.java +++ b/src/main/java/io/mosip/print/dto/PDFSignatureRequestDto.java @@ -1,11 +1,6 @@ package io.mosip.print.dto; -import javax.validation.constraints.Max; -import javax.validation.constraints.Min; -import javax.validation.constraints.NotBlank; - import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; diff --git a/src/main/java/io/mosip/print/dto/PrintRequest.java b/src/main/java/io/mosip/print/dto/PrintRequest.java index a36942cc..a91f8c59 100644 --- a/src/main/java/io/mosip/print/dto/PrintRequest.java +++ b/src/main/java/io/mosip/print/dto/PrintRequest.java @@ -1,6 +1,5 @@ package io.mosip.print.dto; -import io.mosip.print.dto.BaseRestRequestDTO; import lombok.Data; import lombok.EqualsAndHashCode; diff --git a/src/main/java/io/mosip/print/dto/VidResponseDTO.java b/src/main/java/io/mosip/print/dto/VidResponseDTO.java index c6378012..36d57b96 100644 --- a/src/main/java/io/mosip/print/dto/VidResponseDTO.java +++ b/src/main/java/io/mosip/print/dto/VidResponseDTO.java @@ -3,8 +3,6 @@ import java.io.Serializable; import java.util.List; -import io.mosip.print.dto.BaseRestResponseDTO; -import io.mosip.print.dto.ErrorDTO; import lombok.Data; @Data diff --git a/src/main/java/io/mosip/print/entity/BiometricRecord.java b/src/main/java/io/mosip/print/entity/BiometricRecord.java index 87b6b6d2..da3316ed 100644 --- a/src/main/java/io/mosip/print/entity/BiometricRecord.java +++ b/src/main/java/io/mosip/print/entity/BiometricRecord.java @@ -7,12 +7,6 @@ import java.util.ArrayList; import java.util.List; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlRootElement; -import javax.xml.bind.annotation.XmlType; - import lombok.Data; diff --git a/src/main/java/io/mosip/print/entity/SingleAnySubtypeType.java b/src/main/java/io/mosip/print/entity/SingleAnySubtypeType.java index 997a6e19..2c9c8559 100644 --- a/src/main/java/io/mosip/print/entity/SingleAnySubtypeType.java +++ b/src/main/java/io/mosip/print/entity/SingleAnySubtypeType.java @@ -1,6 +1,5 @@ package io.mosip.print.entity; import javax.xml.bind.annotation.XmlEnum; -import javax.xml.bind.annotation.XmlEnum; import javax.xml.bind.annotation.XmlEnumValue; import javax.xml.bind.annotation.XmlType; diff --git a/src/main/java/io/mosip/print/exception/PlatformErrorMessages.java b/src/main/java/io/mosip/print/exception/PlatformErrorMessages.java index 3868cfb5..d2f9f67d 100644 --- a/src/main/java/io/mosip/print/exception/PlatformErrorMessages.java +++ b/src/main/java/io/mosip/print/exception/PlatformErrorMessages.java @@ -71,8 +71,12 @@ public enum PlatformErrorMessages { CERTIFICATE_THUMBPRINT_ERROR(PlatformConstants.PRT_PRINT_PREFIX + "026", "certificate thumbprint failure"), PRT_INVALID_KEY_EXCEPTION(PlatformConstants.PRT_PRINT_PREFIX + "027", "invalid key"), PRT_PDF_SIGN_EXCEPTION(PlatformConstants.PRT_PRINT_PREFIX + "028", "error occured while signing pdf"), - PRT_UNKNOWN_DECRYPTION_EXCEPTION(PlatformConstants.PRT_PRINT_PREFIX + "029", "Unknown Error in data decryption."); - + PRT_UNKNOWN_DECRYPTION_EXCEPTION(PlatformConstants.PRT_PRINT_PREFIX + "029", "Unknown Error in data decryption."), + PRT_RID_MISSING_EXCEPTION(PlatformConstants.PRT_PRINT_PREFIX + "029", "RID is mandatory"), + PRT_STATUS_MISSING_EXCEPTION(PlatformConstants.PRT_PRINT_PREFIX + "030", "Printer Status Missing or Invalid"), + PRT_UNKNOWN_EXCEPTION(PlatformConstants.PRT_PRINT_PREFIX + "031", "Unknown Error"), + PRT_PRINT_ID_INVALID_EXCEPTION(PlatformConstants.PRT_PRINT_PREFIX + "032", "Entered Print Request id is invalid"); + /** The error message. */ diff --git a/src/main/java/io/mosip/print/service/impl/PrintRestClientServiceImpl.java b/src/main/java/io/mosip/print/service/impl/PrintRestClientServiceImpl.java index 6269c4be..4f6b356c 100644 --- a/src/main/java/io/mosip/print/service/impl/PrintRestClientServiceImpl.java +++ b/src/main/java/io/mosip/print/service/impl/PrintRestClientServiceImpl.java @@ -12,9 +12,7 @@ import org.springframework.web.util.UriComponentsBuilder; import io.mosip.print.constant.ApiName; -import io.mosip.print.constant.LoggerFileConstant; import io.mosip.print.exception.ApisResourceAccessException; -import io.mosip.print.exception.ExceptionUtils; import io.mosip.print.exception.PlatformErrorMessages; import io.mosip.print.logger.PrintLogger; import io.mosip.print.service.PrintRestClientService; diff --git a/src/main/java/io/mosip/print/service/impl/PrintServiceImpl.java b/src/main/java/io/mosip/print/service/impl/PrintServiceImpl.java index 3ea3c82c..e0748ca8 100644 --- a/src/main/java/io/mosip/print/service/impl/PrintServiceImpl.java +++ b/src/main/java/io/mosip/print/service/impl/PrintServiceImpl.java @@ -4,7 +4,6 @@ import java.io.DataInputStream; import java.io.File; import java.io.IOException; -import java.io.InputStream; import java.net.URI; import java.security.InvalidAlgorithmParameterException; import java.security.InvalidKeyException; @@ -36,11 +35,7 @@ import io.mosip.print.exception.*; import io.mosip.print.idrepo.dto.IdResponseDTO1; import io.mosip.print.repository.MspCardRepository; -import io.mosip.vercred.CredentialsVerifier; -import io.mosip.vercred.exception.ProofDocumentNotFoundException; -import io.mosip.vercred.exception.ProofTypeNotFoundException; -import io.mosip.vercred.exception.PubicKeyNotFoundException; -import io.mosip.vercred.exception.UnknownException; + import org.apache.commons.codec.binary.Base64; import org.joda.time.DateTime; import org.json.simple.JSONArray; @@ -166,9 +161,6 @@ public class PrintServiceImpl implements PrintService{ @Autowired private Environment env; - @Autowired - private CredentialsVerifier credentialsVerifier; - @Value("${mosip.datashare.partner.id}") private String partnerId; @@ -184,6 +176,8 @@ public class PrintServiceImpl implements PrintService{ @Value("${mosip.print.verify.credentials.flag:true}") private boolean verifyCredentialsFlag; + @Value("${token.request.clientId}") + private String clientId; @Autowired @Qualifier("mspCardRepository") @@ -256,52 +250,6 @@ private String getSignature(String sign, String crdential) { String signature = signHeader + "." + crdential + "." + signData; return signature; } - - public boolean generateCardOl(EventModel eventModel) { - String credential = null; - boolean isPrinted = false; - boolean verified=false; - try { - if (eventModel.getEvent().getDataShareUri() == null || eventModel.getEvent().getDataShareUri().isEmpty()) { - credential = eventModel.getEvent().getData().get("credential").toString(); - } else { - String dataShareUrl = eventModel.getEvent().getDataShareUri(); - URI dataShareUri = URI.create(dataShareUrl); - credential = restApiClient.getApi(dataShareUri, String.class); - } - String ecryptionPin = eventModel.getEvent().getData().get("protectionKey").toString(); - String decodedCredential = cryptoCoreUtil.decrypt(credential); - printLogger.debug("vc is printed security valuation.... : {}",decodedCredential); - if (verifyCredentialsFlag){ - printLogger.info("Configured received credentials to be verified. Flag {}", verifyCredentialsFlag); - try { - verified=credentialsVerifier.verifyPrintCredentials(decodedCredential); - if (!verified) { - printLogger.error("Received Credentials failed in verifiable credential verify method. So, the credentials will not be printed." + - " Id: {}, Transaction Id: {}", eventModel.getEvent().getId(), eventModel.getEvent().getTransactionId()); - return false; - } - }catch (ProofDocumentNotFoundException | ProofTypeNotFoundException e){ - printLogger.error("Proof document is not available in the received credentials." + - " Id: {}, Transaction Id: {}", eventModel.getEvent().getId(), eventModel.getEvent().getTransactionId()); - }catch (UnknownException | PubicKeyNotFoundException e){ - printLogger.error("Received Credentials failed in verifiable credential verify method. So, the credentials will not be printed." + - " Id: {}, Transaction Id: {}", eventModel.getEvent().getId(), eventModel.getEvent().getTransactionId()); - return false; - } - } - Map proofMap = new HashMap(); - proofMap = (Map) eventModel.getEvent().getData().get("proof"); -// byte[] pdfbytes = getDocuments(decodedCredential, -// eventModel.getEvent().getData().get("credentialType").toString(), ecryptionPin, -// eventModel.getEvent().getTransactionId(), "UIN", false).get("uinPdf"); - isPrinted = true; - }catch (Exception e){ - printLogger.error(e.getMessage() , e); - isPrinted = false; - } - return isPrinted; - } private Map getDocuments(String credential, String credentialType, String encryptionPin, String requestId, String sign, String cardType, @@ -315,6 +263,7 @@ private Map getDocuments(String credential, String credentialTyp String uin = null; LogDescription description = new LogDescription(); String password = null; + boolean isPhotoSet=false; String individualBio = null; Map attributes = new LinkedHashMap<>(); boolean isTransactionSuccessful = false; @@ -326,14 +275,18 @@ private Map getDocuments(String credential, String credentialTyp credentialSubject = getCrdentialSubject(credential); org.json.JSONObject credentialSubjectJson = new org.json.JSONObject(credentialSubject); org.json.JSONObject decryptedJson = decryptAttribute(credentialSubjectJson, encryptionPin, credential); - individualBio = decryptedJson.getString("biometrics"); - String individualBiometric = new String(individualBio); + if(decryptedJson.has("biometrics")){ + individualBio = decryptedJson.getString("biometrics"); + String individualBiometric = new String(individualBio); + isPhotoSet = setApplicantPhoto(individualBiometric, attributes); + attributes.put("isPhotoSet",isPhotoSet); + } + uin = decryptedJson.getString("UIN"); if (isPasswordProtected) { password = getPassword(uin); } - boolean isPhotoSet = setApplicantPhoto(individualBiometric, attributes); if (!isPhotoSet) { printLogger.debug(LoggerFileConstant.SESSIONID.toString(), LoggerFileConstant.REGISTRATIONID.toString(), uin + @@ -341,12 +294,16 @@ private Map getDocuments(String credential, String credentialTyp } setTemplateAttributes(decryptedJson.toString(), attributes); attributes.put(IdType.UIN.toString(), uin); - attributes.put(IdType.VID.toString(), vid); + if (vid != null) + attributes.put(IdType.VID.toString(), vid); + else + attributes.put(IdType.VID.toString(), ""); + byte[] textFileByte = createTextFile(decryptedJson.toString()); byteMap.put(UIN_TEXT_FILE, textFileByte); - boolean isQRcodeSet = setQrCode(decryptedJson.toString(), attributes); + boolean isQRcodeSet = setQrCode(decryptedJson.toString(), attributes, isPhotoSet); if (!isQRcodeSet) { printLogger.debug(LoggerFileConstant.SESSIONID.toString(), LoggerFileConstant.REGISTRATIONID.toString(), uin + @@ -460,150 +417,7 @@ private Map getDocuments(String credential, String credentialTyp return attributes; } - /* - * (non-Javadoc) - * - * @see io.mosip.print.service.PrintService# - * getDocuments(io.mosip.registration.processor.core.constant.IdType, - * java.lang.String, java.lang.String, boolean) - */ - private Map getDocumentsOld(String credential, String credentialType, String encryptionPin, - String requestId, - String cardType, - boolean isPasswordProtected) { - printLogger.debug("PrintServiceImpl::getDocuments()::entry"); - String credentialSubject; - Map byteMap = new HashMap<>(); - String uin = null; - LogDescription description = new LogDescription(); - String password = null; - String individualBio = null; - Map attributes = new LinkedHashMap<>(); - boolean isTransactionSuccessful = false; - String template = UIN_CARD_TEMPLATE; - byte[] pdfbytes = null; - try { - - credentialSubject = getCrdentialSubject(credential); - org.json.JSONObject credentialSubjectJson = new org.json.JSONObject(credentialSubject); - org.json.JSONObject decryptedJson = decryptAttribute(credentialSubjectJson, encryptionPin, credential); - individualBio = decryptedJson.getString("biometrics"); - String individualBiometric = new String(individualBio); - uin = decryptedJson.getString("UIN"); - if (isPasswordProtected) { - password = getPassword(uin); - } - if (credentialType.equalsIgnoreCase("qrcode")) { - boolean isQRcodeSet = setQrCode(decryptedJson.toString(), attributes); - InputStream uinArtifact = templateGenerator.getTemplate(template, attributes, templateLang); - pdfbytes = uinCardGenerator.generateUinCard(uinArtifact, UinCardType.PDF, - password); - - } else { - boolean isPhotoSet = setApplicantPhoto(individualBiometric, attributes); - if (!isPhotoSet) { - printLogger.debug(PlatformErrorMessages.PRT_PRT_APPLICANT_PHOTO_NOT_SET.name()); - } - setTemplateAttributes(decryptedJson.toString(), attributes); - attributes.put(IdType.UIN.toString(), uin); - - byte[] textFileByte = createTextFile(decryptedJson.toString()); - byteMap.put(UIN_TEXT_FILE, textFileByte); - - boolean isQRcodeSet = setQrCode(decryptedJson.toString(), attributes); - if (!isQRcodeSet) { - printLogger.debug(PlatformErrorMessages.PRT_PRT_QRCODE_NOT_SET.name()); - } - // getting template and placing original valuespng - InputStream uinArtifact = templateGenerator.getTemplate(template, attributes, templateLang); - if (uinArtifact == null) { - printLogger.error(PlatformErrorMessages.PRT_TEM_PROCESSING_FAILURE.name()); - throw new TemplateProcessingFailureException( - PlatformErrorMessages.PRT_TEM_PROCESSING_FAILURE.getCode()); - } - pdfbytes = uinCardGenerator.generateUinCard(uinArtifact, UinCardType.PDF, password); - - } - printStatusUpdate(requestId, pdfbytes, credentialType); - isTransactionSuccessful = true; - - } - catch (QrcodeGenerationException e) { - description.setMessage(PlatformErrorMessages.PRT_PRT_QR_CODE_GENERATION_ERROR.getMessage()); - description.setCode(PlatformErrorMessages.PRT_PRT_QR_CODE_GENERATION_ERROR.getCode()); - printLogger.error(PlatformErrorMessages.PRT_PRT_QRCODE_NOT_GENERATED.name() , e); - throw new PDFGeneratorException(PDFGeneratorExceptionCodeConstant.PDF_EXCEPTION.getErrorCode(), - e.getErrorText()); - - } catch (UINNotFoundInDatabase e) { - description.setMessage(PlatformErrorMessages.PRT_PRT_UIN_NOT_FOUND_IN_DATABASE.getMessage()); - description.setCode(PlatformErrorMessages.PRT_PRT_UIN_NOT_FOUND_IN_DATABASE.getCode()); - - printLogger.error( - PlatformErrorMessages.PRT_PRT_UIN_NOT_FOUND_IN_DATABASE.name() ,e); - throw new PDFGeneratorException(PDFGeneratorExceptionCodeConstant.PDF_EXCEPTION.getErrorCode(), - e.getErrorText()); - - } catch (TemplateProcessingFailureException e) { - description.setMessage(PlatformErrorMessages.PRT_TEM_PROCESSING_FAILURE.getMessage()); - description.setCode(PlatformErrorMessages.PRT_TEM_PROCESSING_FAILURE.getCode()); - - printLogger.error(PlatformErrorMessages.PRT_TEM_PROCESSING_FAILURE.name() ,e); - throw new TemplateProcessingFailureException(PlatformErrorMessages.PRT_TEM_PROCESSING_FAILURE.getMessage()); - - } catch (PDFGeneratorException e) { - description.setMessage(PlatformErrorMessages.PRT_PRT_PDF_NOT_GENERATED.getMessage()); - description.setCode(PlatformErrorMessages.PRT_PRT_PDF_NOT_GENERATED.getCode()); - - printLogger.error(PlatformErrorMessages.PRT_PRT_PDF_NOT_GENERATED.name() ,e); - throw new PDFGeneratorException(PDFGeneratorExceptionCodeConstant.PDF_EXCEPTION.getErrorCode(), - e.getErrorText()); - - } catch (PDFSignatureException e) { - description.setMessage(PlatformErrorMessages.PRT_PRT_PDF_SIGNATURE_EXCEPTION.getMessage()); - description.setCode(PlatformErrorMessages.PRT_PRT_PDF_SIGNATURE_EXCEPTION.getCode()); - - printLogger.error(PlatformErrorMessages.PRT_PRT_PDF_SIGNATURE_EXCEPTION.name() ,e); - throw new PDFSignatureException(PlatformErrorMessages.PRT_PRT_PDF_SIGNATURE_EXCEPTION.getMessage()); - - } catch (Exception ex) { - description.setMessage(PlatformErrorMessages.PRT_PRT_PDF_GENERATION_FAILED.getMessage()); - description.setCode(PlatformErrorMessages.PRT_PRT_PDF_GENERATION_FAILED.getCode()); - printLogger.error(ex.getMessage() ,ex); - throw new PDFGeneratorException(PDFGeneratorExceptionCodeConstant.PDF_EXCEPTION.getErrorCode(), - ex.getMessage() ,ex); - - } finally { - String eventId = ""; - String eventName = ""; - String eventType = ""; - if (isTransactionSuccessful) { - description.setMessage(PlatformSuccessMessages.RPR_PRINT_SERVICE_SUCCESS.getMessage()); - description.setCode(PlatformSuccessMessages.RPR_PRINT_SERVICE_SUCCESS.getCode()); - - eventId = EventId.RPR_402.toString(); - eventName = EventName.UPDATE.toString(); - eventType = EventType.BUSINESS.toString(); - } else { - description.setMessage(PlatformErrorMessages.PRT_PRT_PDF_GENERATION_FAILED.getMessage()); - description.setCode(PlatformErrorMessages.PRT_PRT_PDF_GENERATION_FAILED.getCode()); - - eventId = EventId.RPR_405.toString(); - eventName = EventName.EXCEPTION.toString(); - eventType = EventType.SYSTEM.toString(); - } - /** Module-Id can be Both Success/Error code */ - String moduleId = isTransactionSuccessful ? PlatformSuccessMessages.RPR_PRINT_SERVICE_SUCCESS.getCode() - : description.getCode(); - String moduleName = ModuleName.PRINT_SERVICE.toString(); - auditLogRequestBuilder.createAuditRequestBuilder(description.getMessage(), eventId, eventName, eventType, - moduleId, moduleName, uin); - } - printLogger.debug("PrintServiceImpl::getDocuments()::exit"); - - return byteMap; - } /** * Creates the text file. @@ -672,11 +486,13 @@ private byte[] createTextFile(String jsonString) throws IOException { * occurred. * @throws io.mosip.print.exception.QrcodeGenerationException */ - private boolean setQrCode(String qrString, Map attributes) + private boolean setQrCode(String qrString, Map attributes,boolean isPhotoSet) throws QrcodeGenerationException, IOException, io.mosip.print.exception.QrcodeGenerationException { boolean isQRCodeSet = false; JSONObject qrJsonObj = JsonUtil.objectMapperReadValue(qrString, JSONObject.class); - qrJsonObj.remove("biometrics"); + if(isPhotoSet) { + qrJsonObj.remove("biometrics"); + } byte[] qrCodeBytes = qrCodeGenerator.generateQrCode(qrJsonObj.toString(), QrVersion.V30); if (qrCodeBytes != null) { String imageString = Base64.encodeBase64String(qrCodeBytes); diff --git a/src/main/java/io/mosip/print/service/impl/UinCardGeneratorImpl.java b/src/main/java/io/mosip/print/service/impl/UinCardGeneratorImpl.java index 843010a0..1cfef21c 100644 --- a/src/main/java/io/mosip/print/service/impl/UinCardGeneratorImpl.java +++ b/src/main/java/io/mosip/print/service/impl/UinCardGeneratorImpl.java @@ -7,7 +7,6 @@ import java.time.format.DateTimeFormatter; import org.apache.commons.codec.binary.Base64; -import org.apache.commons.lang3.exception.ExceptionUtils; import org.slf4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; @@ -18,7 +17,6 @@ import com.fasterxml.jackson.databind.ObjectMapper; import io.mosip.print.constant.ApiName; -import io.mosip.print.constant.LoggerFileConstant; import io.mosip.print.constant.PDFGeneratorExceptionCodeConstant; import io.mosip.print.constant.UinCardType; import io.mosip.print.core.http.RequestWrapper; diff --git a/src/main/java/io/mosip/print/util/RestApiClient.java b/src/main/java/io/mosip/print/util/RestApiClient.java index bca8f668..a026d843 100644 --- a/src/main/java/io/mosip/print/util/RestApiClient.java +++ b/src/main/java/io/mosip/print/util/RestApiClient.java @@ -3,7 +3,7 @@ import java.io.IOException; import java.net.URI; import java.util.Iterator; -import org.apache.commons.lang3.exception.ExceptionUtils; + import org.slf4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; @@ -17,14 +17,6 @@ import org.springframework.util.MultiValueMap; import org.springframework.web.client.RestTemplate; -import com.google.gson.Gson; - -import io.mosip.print.constant.LoggerFileConstant; -import io.mosip.print.dto.Metadata; -import io.mosip.print.dto.PasswordRequest; -import io.mosip.print.dto.SecretKeyRequest; -import io.mosip.print.dto.TokenRequestDTO; -import io.mosip.print.exception.TokenGenerationFailedException; import io.mosip.print.logger.PrintLogger; /** @@ -40,7 +32,7 @@ public class RestApiClient { /** The builder. */ @Autowired -// @Qualifier("selfTokenRestTemplate") + @Qualifier("selfTokenRestTemplate") private RestTemplate restTemplate; @Autowired diff --git a/src/main/java/io/mosip/print/util/WebSubSubscriptionHelper.java b/src/main/java/io/mosip/print/util/WebSubSubscriptionHelper.java index 7cb4fcb8..feb3a19f 100644 --- a/src/main/java/io/mosip/print/util/WebSubSubscriptionHelper.java +++ b/src/main/java/io/mosip/print/util/WebSubSubscriptionHelper.java @@ -2,9 +2,7 @@ import org.slf4j.Logger; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; -import org.springframework.cache.annotation.Cacheable; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.scheduling.annotation.Scheduled; @@ -16,13 +14,10 @@ import io.mosip.kernel.websub.api.model.SubscriptionChangeRequest; import io.mosip.kernel.websub.api.model.SubscriptionChangeResponse; import io.mosip.kernel.websub.api.model.UnsubscriptionRequest; -import io.mosip.print.constant.LoggerFileConstant; import io.mosip.print.logger.PrintLogger; import io.mosip.print.model.CredentialStatusEvent; import org.springframework.web.client.RestTemplate; -import javax.annotation.PostConstruct; - @Component public class WebSubSubscriptionHelper { @@ -73,7 +68,7 @@ private void subscribeForPrintServiceEvents() { LOGGER.info("subscription request : {}", subscriptionRequest); sb.subscribe(subscriptionRequest); } catch (WebSubClientException e) { - LOGGER.info("websub subscription error {} {}", WEBSUBSUBSCRIPTIONHEPLER, INITSUBSCRIPTION); + LOGGER.error("websub subscription error {} {}", WEBSUBSUBSCRIPTIONHEPLER, INITSUBSCRIPTION, e); } } diff --git a/src/main/resources/application-local1.properties b/src/main/resources/application-local1.properties index f38023ec..23444a21 100644 --- a/src/main/resources/application-local1.properties +++ b/src/main/resources/application-local1.properties @@ -131,3 +131,15 @@ mosip.print.crypto.p12.password=password@123 mosip.print.crypto.p12.alias=partner mosip.auth.adapter.impl.basepackage=io.mosip.kernel.auth.defaultadapter mosip.kernel.auth.appids.realm.map={prereg:'preregistration',ida:'mosip',registrationclient:'mosip',regproc:'mosip',partner:'mosip',resident:'mosip',admin:'mosip',crereq:'mosip',creser:'mosip',datsha:'mosip',idrepo:'mosip'} +#-----------------DATABASE Configuration --------------------------# +mosip.database.ip=postgres-postgresql.postgres.svc.cluster.local +mosip.database.port=5432 +hibernate.dialect: org.hibernate.dialect.PostgreSQLDialect +hibernate.hbm2ddl.auto: none +hibernate.jdbc.lob.non_contextual_creation: true +hibernate.show_sql: false +javax.persistence.jdbc.driver: org.postgresql.Driver +javax.persistence.jdbc.password: password +javax.persistence.jdbc.url=jdbc:postgresql://dev2.mosip.net:5432/mosip_print?useSSL=false +javax.persistence.jdbc.user: postgres +mosip.application.id=io.mosip.print diff --git a/src/main/resources/bootstrap.properties b/src/main/resources/bootstrap.properties index 427a874b..300a9d68 100644 --- a/src/main/resources/bootstrap.properties +++ b/src/main/resources/bootstrap.properties @@ -1,13 +1,13 @@ -spring.cloud.config.uri=localhost -spring.cloud.config.label=develop -spring.profiles.active=default +#spring.cloud.config.uri=localhost +#spring.cloud.config.label=develop +spring.profiles.active=local1 spring.cloud.config.name=cardprint spring.application.name=cardprint management.endpoint.health.show-details=always management.endpoints.web.exposure.include=info,health,refresh server.port=8089 -server.servlet.path=/v1/cardprint +server.servlet.context-path=/v1/cardprint health.config.enabled=false From d609bc1cdeaff165bd2f0e502bb8a4e6428a8bab Mon Sep 17 00:00:00 2001 From: Muralitharan K Date: Wed, 12 Oct 2022 16:01:32 +0530 Subject: [PATCH 11/23] Callback url change. --- src/main/java/io/mosip/print/controller/Print.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/io/mosip/print/controller/Print.java b/src/main/java/io/mosip/print/controller/Print.java index 25ad78de..93174aa2 100644 --- a/src/main/java/io/mosip/print/controller/Print.java +++ b/src/main/java/io/mosip/print/controller/Print.java @@ -38,7 +38,7 @@ public class Print { * @throws Exception */ @PostMapping(path = "/callback/notifyPrint", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) - @PreAuthenticateContentAndVerifyIntent(secret = "${mosip.event.secret}", callback = "/v1/print/print/callback/notifyPrint", topic = "${mosip.event.topic}") + @PreAuthenticateContentAndVerifyIntent(secret = "${mosip.event.secret}", callback = "/v1/cardprint/print/callback/notifyPrint", topic = "${mosip.event.topic}") public ResponseEntity handleSubscribeEvent(@RequestBody EventModel eventModel) throws Exception { printLogger.info("event recieved from websub"+", id: {}",eventModel.getEvent().getId()); boolean isPrinted = printService.generateCard(eventModel); From cf7fcf89127c40d1aead145c0b370baa2f07b948 Mon Sep 17 00:00:00 2001 From: Muralitharan K Date: Wed, 12 Oct 2022 16:34:16 +0530 Subject: [PATCH 12/23] Maven install trigger file added. --- .github/workflows/manual_push_trigger.yml | 77 +++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 .github/workflows/manual_push_trigger.yml diff --git a/.github/workflows/manual_push_trigger.yml b/.github/workflows/manual_push_trigger.yml new file mode 100644 index 00000000..cf1154ea --- /dev/null +++ b/.github/workflows/manual_push_trigger.yml @@ -0,0 +1,77 @@ +name: Cardprinter trigger for maven install + +on: workflow_dispatch + +jobs: + build: + + runs-on: ubuntu-latest + env: + NAMESPACE: ${{ secrets.dev_namespace_docker_hub }} + SERVICE_NAME: print + SERVICE_LOCATION: print-service + + steps: + - uses: actions/checkout@v2 + - name: Set up JDK 11 + uses: actions/setup-java@v1 + with: + ref: ${{ github.ref }} + java-version: 11 + server-id: ossrh # Value of the distributionManagement/repository/id field of the pom.xml + settings-path: ${{ github.workspace }} # location for the settings.xml file + - name: Setup branch and env + run: | + # Strip git ref prefix from version + echo "BRANCH_NAME=$(echo ${{ github.ref }} | sed -e 's,.*/\(.*\),\1,')" >> $GITHUB_ENV + echo "GPG_TTY=$(tty)" >> $GITHUB_ENV + + - name: Setup branch and GPG public key + run: | + # Strip git ref prefix from version + echo ${{ env.BRANCH_NAME }} + echo ${{ env.GPG_TTY }} + sudo apt-get --yes install gnupg2 +# gpg2 --import ./.github/keys/mosipgpgkey_pub.gpg +# gpg2 --quiet --batch --passphrase=${{secrets.gpg_secret}} --allow-secret-key-import --import ./.github/keys/mosipgpgkey_sec.gpg + + - uses: actions/cache@v1 + with: + path: ~/.m2/repository + key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} + restore-keys: | + ${{ runner.os }}-maven-${{ env.BRANCH_NAME }} + + - name: Setup the settings file for ossrh server + run: echo " ossrh ${{secrets.ossrh_user}} ${{secrets.ossrh_secret}} ossrh true gpg2 ${{secrets.gpg_secret}} allow-snapshots true snapshots-repo https://oss.sonatype.org/content/repositories/snapshots false true releases-repo https://oss.sonatype.org/service/local/staging/deploy/maven2 true false sonar . https://sonarcloud.io false " > $GITHUB_WORKSPACE/settings.xml + + + - name: Build with Maven + run: | + cd print-service + mvn clean install -U -s $GITHUB_WORKSPACE/settings.xml -DskipTests -Dgpg.skip=true --file pom.xml + + - name: Removing target jars + run: | + rm -rf $(find -name '*.jar' ! -executable -type f) + + - name: Build image + run: | + cd "./${{env.SERVICE_LOCATION}}" + docker build . --file Dockerfile --tag ${{ env.SERVICE_NAME }} + + - name: Log into registry + run: echo "${{ secrets.release_docker_hub }}" | docker login -u ${{ secrets.actor_docker_hub }} --password-stdin + + - name: Push image + run: | + IMAGE_ID=$NAMESPACE/$SERVICE_NAME + + # Change all uppercase to lowercase + IMAGE_ID=$(echo $IMAGE_ID | tr '[A-Z]' '[a-z]') + echo "push version ${{steps.getPomVersion.outputs.info}}" + VERSION=$BRANCH_NAME + echo IMAGE_ID=$IMAGE_ID + echo VERSION=$VERSION + docker tag $SERVICE_NAME $IMAGE_ID:$VERSION + docker push $IMAGE_ID:$VERSION \ No newline at end of file From dfb018f1bbcdf65934f9feabb9d9a7c7eccb5710 Mon Sep 17 00:00:00 2001 From: Muralitharan K Date: Wed, 12 Oct 2022 17:24:58 +0530 Subject: [PATCH 13/23] Change docker image name --- .github/workflows/manual_push_trigger.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/manual_push_trigger.yml b/.github/workflows/manual_push_trigger.yml index cf1154ea..9ff18054 100644 --- a/.github/workflows/manual_push_trigger.yml +++ b/.github/workflows/manual_push_trigger.yml @@ -8,8 +8,8 @@ jobs: runs-on: ubuntu-latest env: NAMESPACE: ${{ secrets.dev_namespace_docker_hub }} - SERVICE_NAME: print - SERVICE_LOCATION: print-service + SERVICE_NAME: msp-print-service + SERVICE_LOCATION: msp-print-service steps: - uses: actions/checkout@v2 @@ -48,7 +48,6 @@ jobs: - name: Build with Maven run: | - cd print-service mvn clean install -U -s $GITHUB_WORKSPACE/settings.xml -DskipTests -Dgpg.skip=true --file pom.xml - name: Removing target jars @@ -57,7 +56,6 @@ jobs: - name: Build image run: | - cd "./${{env.SERVICE_LOCATION}}" docker build . --file Dockerfile --tag ${{ env.SERVICE_NAME }} - name: Log into registry From 041b58f9f3b8eecd195017abaa50f5384c1dfba5 Mon Sep 17 00:00:00 2001 From: Muralitharan K Date: Tue, 18 Oct 2022 16:41:04 +0530 Subject: [PATCH 14/23] Address field correction --- src/main/java/io/mosip/print/service/impl/PrintServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/io/mosip/print/service/impl/PrintServiceImpl.java b/src/main/java/io/mosip/print/service/impl/PrintServiceImpl.java index e0748ca8..34018fcf 100644 --- a/src/main/java/io/mosip/print/service/impl/PrintServiceImpl.java +++ b/src/main/java/io/mosip/print/service/impl/PrintServiceImpl.java @@ -215,7 +215,7 @@ public boolean generateCard(EventModel eventModel) { org.json.simple.JSONObject obj = new org.json.simple.JSONObject(); obj.put("photo",attributes.get(APPLICANT_PHOTO)); obj.put("qrCode",attributes.get(QRCODE)); - obj.put("address", ((attributes.get("address") != null && !attributes.get("address").equals("")) ? attributes.get("address").toString() : "N/A")); + obj.put("address", ((attributes.get("addressLine1") != null && !attributes.get("addressLine2").equals("")) ? attributes.get("addressLine3").toString() : "N/A")); obj.put("locality", ((attributes.get("locality") != null && !attributes.get("locality").equals("")) ? attributes.get("locality").toString() : "N/A")); obj.put("city", ((attributes.get("city") != null && !attributes.get("city").equals("")) ? attributes.get("city").toString() : "N/A")); obj.put("state", ((attributes.get("state") != null && !attributes.get("state").equals("")) ? attributes.get("state").toString() : "N/A")); From 54ec5c99ea1794b7d4815caa39f0124c37096500 Mon Sep 17 00:00:00 2001 From: Muralitharan K Date: Tue, 18 Oct 2022 17:26:41 +0530 Subject: [PATCH 15/23] Address field correction --- src/main/java/io/mosip/print/service/impl/PrintServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/io/mosip/print/service/impl/PrintServiceImpl.java b/src/main/java/io/mosip/print/service/impl/PrintServiceImpl.java index 34018fcf..1a5cf9cd 100644 --- a/src/main/java/io/mosip/print/service/impl/PrintServiceImpl.java +++ b/src/main/java/io/mosip/print/service/impl/PrintServiceImpl.java @@ -215,7 +215,7 @@ public boolean generateCard(EventModel eventModel) { org.json.simple.JSONObject obj = new org.json.simple.JSONObject(); obj.put("photo",attributes.get(APPLICANT_PHOTO)); obj.put("qrCode",attributes.get(QRCODE)); - obj.put("address", ((attributes.get("addressLine1") != null && !attributes.get("addressLine2").equals("")) ? attributes.get("addressLine3").toString() : "N/A")); + obj.put("address", ((attributes.get("addressLine1") != null && !attributes.get("addressLine1").equals("")) ? attributes.get("addressLine1").toString() : "N/A")); obj.put("locality", ((attributes.get("locality") != null && !attributes.get("locality").equals("")) ? attributes.get("locality").toString() : "N/A")); obj.put("city", ((attributes.get("city") != null && !attributes.get("city").equals("")) ? attributes.get("city").toString() : "N/A")); obj.put("state", ((attributes.get("state") != null && !attributes.get("state").equals("")) ? attributes.get("state").toString() : "N/A")); From 791555a3e0cbfd457411506bcbacc275fa50d472 Mon Sep 17 00:00:00 2001 From: Muralitharan K Date: Tue, 18 Oct 2022 22:37:57 +0530 Subject: [PATCH 16/23] Address field correction --- .../print/service/impl/PrintServiceImpl.java | 83 +++++++------------ 1 file changed, 31 insertions(+), 52 deletions(-) diff --git a/src/main/java/io/mosip/print/service/impl/PrintServiceImpl.java b/src/main/java/io/mosip/print/service/impl/PrintServiceImpl.java index 1a5cf9cd..c67afdd1 100644 --- a/src/main/java/io/mosip/print/service/impl/PrintServiceImpl.java +++ b/src/main/java/io/mosip/print/service/impl/PrintServiceImpl.java @@ -1,41 +1,29 @@ package io.mosip.print.service.impl; -import java.io.ByteArrayInputStream; -import java.io.DataInputStream; -import java.io.File; -import java.io.IOException; -import java.net.URI; -import java.security.InvalidAlgorithmParameterException; -import java.security.InvalidKeyException; -import java.security.NoSuchAlgorithmException; -import java.security.spec.InvalidKeySpecException; -import java.sql.Timestamp; -import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.Iterator; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Set; -import java.util.UUID; - -import javax.crypto.BadPaddingException; -import javax.crypto.IllegalBlockSizeException; - import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.databind.JsonMappingException; import com.google.gson.Gson; import com.google.gson.GsonBuilder; - +import io.mosip.kernel.core.util.StringUtils; import io.mosip.print.constant.*; +import io.mosip.print.dto.CryptoWithPinRequestDto; +import io.mosip.print.dto.CryptoWithPinResponseDto; +import io.mosip.print.dto.DataShare; +import io.mosip.print.dto.JsonValue; import io.mosip.print.entity.MspCardEntity; import io.mosip.print.exception.*; import io.mosip.print.idrepo.dto.IdResponseDTO1; +import io.mosip.print.logger.LogDescription; +import io.mosip.print.logger.PrintLogger; +import io.mosip.print.model.CredentialStatusEvent; +import io.mosip.print.model.EventModel; +import io.mosip.print.model.StatusEvent; import io.mosip.print.repository.MspCardRepository; - +import io.mosip.print.service.PrintService; +import io.mosip.print.service.UinCardGenerator; +import io.mosip.print.spi.CbeffUtil; +import io.mosip.print.spi.QrCodeGenerator; +import io.mosip.print.util.*; import org.apache.commons.codec.binary.Base64; import org.joda.time.DateTime; import org.json.simple.JSONArray; @@ -49,30 +37,20 @@ import org.springframework.core.env.Environment; import org.springframework.stereotype.Service; -import io.mosip.print.dto.CryptoWithPinRequestDto; -import io.mosip.print.dto.CryptoWithPinResponseDto; -import io.mosip.print.dto.DataShare; -import io.mosip.print.dto.JsonValue; -import io.mosip.print.logger.LogDescription; -import io.mosip.print.logger.PrintLogger; -import io.mosip.print.model.CredentialStatusEvent; -import io.mosip.print.model.EventModel; -import io.mosip.print.model.StatusEvent; -import io.mosip.print.service.PrintService; -import io.mosip.print.service.UinCardGenerator; -import io.mosip.print.spi.CbeffUtil; -import io.mosip.print.spi.QrCodeGenerator; -import io.mosip.print.util.AuditLogRequestBuilder; -import io.mosip.print.util.CbeffToBiometricUtil; -import io.mosip.print.util.CryptoCoreUtil; -import io.mosip.print.util.CryptoUtil; -import io.mosip.print.util.DataShareUtil; -import io.mosip.print.util.DateUtils; -import io.mosip.print.util.JsonUtil; -import io.mosip.print.util.RestApiClient; -import io.mosip.print.util.TemplateGenerator; -import io.mosip.print.util.Utilities; -import io.mosip.print.util.WebSubSubscriptionHelper; +import javax.crypto.BadPaddingException; +import javax.crypto.IllegalBlockSizeException; +import java.io.ByteArrayInputStream; +import java.io.DataInputStream; +import java.io.File; +import java.io.IOException; +import java.net.URI; +import java.security.InvalidAlgorithmParameterException; +import java.security.InvalidKeyException; +import java.security.NoSuchAlgorithmException; +import java.security.spec.InvalidKeySpecException; +import java.sql.Timestamp; +import java.time.LocalDateTime; +import java.util.*; @Service public class PrintServiceImpl implements PrintService{ @@ -215,7 +193,8 @@ public boolean generateCard(EventModel eventModel) { org.json.simple.JSONObject obj = new org.json.simple.JSONObject(); obj.put("photo",attributes.get(APPLICANT_PHOTO)); obj.put("qrCode",attributes.get(QRCODE)); - obj.put("address", ((attributes.get("addressLine1") != null && !attributes.get("addressLine1").equals("")) ? attributes.get("addressLine1").toString() : "N/A")); + String fullAddress = StringUtils.join(new Object[]{attributes.get("addressLine1"), attributes.get("addressLine2"), attributes.get("addressLine3")}, ',' ); + obj.put("address", (fullAddress != null && !fullAddress.equals("")) ? fullAddress : "N/A"); obj.put("locality", ((attributes.get("locality") != null && !attributes.get("locality").equals("")) ? attributes.get("locality").toString() : "N/A")); obj.put("city", ((attributes.get("city") != null && !attributes.get("city").equals("")) ? attributes.get("city").toString() : "N/A")); obj.put("state", ((attributes.get("state") != null && !attributes.get("state").equals("")) ? attributes.get("state").toString() : "N/A")); From c066652855e40057e0de5142722c6d73639755e1 Mon Sep 17 00:00:00 2001 From: Muralitharan K Date: Tue, 18 Oct 2022 22:59:01 +0530 Subject: [PATCH 17/23] Address field correction --- .../java/io/mosip/print/service/impl/PrintServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/io/mosip/print/service/impl/PrintServiceImpl.java b/src/main/java/io/mosip/print/service/impl/PrintServiceImpl.java index c67afdd1..97b636eb 100644 --- a/src/main/java/io/mosip/print/service/impl/PrintServiceImpl.java +++ b/src/main/java/io/mosip/print/service/impl/PrintServiceImpl.java @@ -4,7 +4,6 @@ import com.fasterxml.jackson.databind.JsonMappingException; import com.google.gson.Gson; import com.google.gson.GsonBuilder; -import io.mosip.kernel.core.util.StringUtils; import io.mosip.print.constant.*; import io.mosip.print.dto.CryptoWithPinRequestDto; import io.mosip.print.dto.CryptoWithPinResponseDto; @@ -36,6 +35,7 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.core.env.Environment; import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; import javax.crypto.BadPaddingException; import javax.crypto.IllegalBlockSizeException; @@ -193,7 +193,7 @@ public boolean generateCard(EventModel eventModel) { org.json.simple.JSONObject obj = new org.json.simple.JSONObject(); obj.put("photo",attributes.get(APPLICANT_PHOTO)); obj.put("qrCode",attributes.get(QRCODE)); - String fullAddress = StringUtils.join(new Object[]{attributes.get("addressLine1"), attributes.get("addressLine2"), attributes.get("addressLine3")}, ',' ); + String fullAddress = StringUtils.arrayToDelimitedString(new Object[]{attributes.get("addressLine1"), attributes.get("addressLine2"), attributes.get("addressLine3")}, ", " ); obj.put("address", (fullAddress != null && !fullAddress.equals("")) ? fullAddress : "N/A"); obj.put("locality", ((attributes.get("locality") != null && !attributes.get("locality").equals("")) ? attributes.get("locality").toString() : "N/A")); obj.put("city", ((attributes.get("city") != null && !attributes.get("city").equals("")) ? attributes.get("city").toString() : "N/A")); From 492e2d3728c262d9f32c77df9ecba21b3ce7f457 Mon Sep 17 00:00:00 2001 From: Muralitharan K Date: Wed, 19 Oct 2022 08:48:56 +0530 Subject: [PATCH 18/23] Address field correction --- .../mosip/print/service/impl/PrintServiceImpl.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/main/java/io/mosip/print/service/impl/PrintServiceImpl.java b/src/main/java/io/mosip/print/service/impl/PrintServiceImpl.java index 97b636eb..83c19dc8 100644 --- a/src/main/java/io/mosip/print/service/impl/PrintServiceImpl.java +++ b/src/main/java/io/mosip/print/service/impl/PrintServiceImpl.java @@ -193,8 +193,8 @@ public boolean generateCard(EventModel eventModel) { org.json.simple.JSONObject obj = new org.json.simple.JSONObject(); obj.put("photo",attributes.get(APPLICANT_PHOTO)); obj.put("qrCode",attributes.get(QRCODE)); - String fullAddress = StringUtils.arrayToDelimitedString(new Object[]{attributes.get("addressLine1"), attributes.get("addressLine2"), attributes.get("addressLine3")}, ", " ); - obj.put("address", (fullAddress != null && !fullAddress.equals("")) ? fullAddress : "N/A"); + String fullAddress = getFullAddress(attributes); + obj.put("address", (fullAddress.length() > 0) ? fullAddress : "N/A"); obj.put("locality", ((attributes.get("locality") != null && !attributes.get("locality").equals("")) ? attributes.get("locality").toString() : "N/A")); obj.put("city", ((attributes.get("city") != null && !attributes.get("city").equals("")) ? attributes.get("city").toString() : "N/A")); obj.put("state", ((attributes.get("state") != null && !attributes.get("state").equals("")) ? attributes.get("state").toString() : "N/A")); @@ -223,6 +223,16 @@ public boolean generateCard(EventModel eventModel) { } return isPrinted; } + + private String getFullAddress(Map attributes) { + Object fullAddress[] = new Object[]{ attributes.get("addressLine1"), + attributes.get("addressLine2"), attributes.get("addressLine3")}; + fullAddress = Arrays.stream(fullAddress) + .filter(s -> (s != null && !s.equals(""))) + .toArray(Object[]::new); + return StringUtils.arrayToCommaDelimitedString(fullAddress); + } + private String getSignature(String sign, String crdential) { String signHeader = sign.split("\\.")[0]; String signData = sign.split("\\.")[2]; From 7d2243d7924481263a36f9be72a1123167cd4c58 Mon Sep 17 00:00:00 2001 From: Muralitharan K Date: Mon, 21 Nov 2022 09:20:30 +0530 Subject: [PATCH 19/23] Removing vid related changes as it added as part of policy --- .../io/mosip/print/service/impl/PrintServiceImpl.java | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/src/main/java/io/mosip/print/service/impl/PrintServiceImpl.java b/src/main/java/io/mosip/print/service/impl/PrintServiceImpl.java index 83c19dc8..7a9c5b4b 100644 --- a/src/main/java/io/mosip/print/service/impl/PrintServiceImpl.java +++ b/src/main/java/io/mosip/print/service/impl/PrintServiceImpl.java @@ -185,7 +185,7 @@ public boolean generateCard(EventModel eventModel) { Map attributes = getDocuments(decodedCrdential, eventModel.getEvent().getData().get("credentialType").toString(), ecryptionPin, eventModel.getEvent().getTransactionId(), getSignature(sign, credential), "UIN", false, eventModel.getEvent().getId(), - eventModel.getEvent().getData().get("registrationId").toString(), eventModel.getEvent().getData().get("vid").toString()); + eventModel.getEvent().getData().get("registrationId").toString()); String printid = (String) eventModel.getEvent().getId(); @@ -242,7 +242,7 @@ private String getSignature(String sign, String crdential) { private Map getDocuments(String credential, String credentialType, String encryptionPin, String requestId, String sign, String cardType, - boolean isPasswordProtected, String refId, String registrationId, String vid) { + boolean isPasswordProtected, String refId, String registrationId) { printLogger.debug(LoggerFileConstant.SESSIONID.toString(), LoggerFileConstant.REGISTRATIONID.toString(), "PrintServiceImpl::getDocuments()::entry"); @@ -283,11 +283,6 @@ private Map getDocuments(String credential, String credentialTyp } setTemplateAttributes(decryptedJson.toString(), attributes); attributes.put(IdType.UIN.toString(), uin); - if (vid != null) - attributes.put(IdType.VID.toString(), vid); - else - attributes.put(IdType.VID.toString(), ""); - byte[] textFileByte = createTextFile(decryptedJson.toString()); byteMap.put(UIN_TEXT_FILE, textFileByte); @@ -299,7 +294,6 @@ private Map getDocuments(String credential, String credentialTyp PlatformErrorMessages.PRT_PRT_QRCODE_NOT_SET.name()); } - printStatusUpdate(requestId, credentialType, uin, refId, registrationId); isTransactionSuccessful = true; From 99bb70a280d41bc277f52db3a8840cae24b78355 Mon Sep 17 00:00:00 2001 From: Muralitharan K Date: Tue, 6 Dec 2022 12:09:46 +0530 Subject: [PATCH 20/23] Adding default photo for infant registration --- .../print/service/impl/PrintServiceImpl.java | 25 ++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/src/main/java/io/mosip/print/service/impl/PrintServiceImpl.java b/src/main/java/io/mosip/print/service/impl/PrintServiceImpl.java index 7a9c5b4b..22c4baa1 100644 --- a/src/main/java/io/mosip/print/service/impl/PrintServiceImpl.java +++ b/src/main/java/io/mosip/print/service/impl/PrintServiceImpl.java @@ -49,6 +49,7 @@ import java.security.NoSuchAlgorithmException; import java.security.spec.InvalidKeySpecException; import java.sql.Timestamp; +import java.time.LocalDate; import java.time.LocalDateTime; import java.util.*; @@ -157,6 +158,12 @@ public class PrintServiceImpl implements PrintService{ @Value("${token.request.clientId}") private String clientId; + @Value("${mosip.print.default.infant.photo:null}") + private String defaultBabyPhoto; + + @Value("${mosip.print.infant.max.age:5}") + private int defaultBabyAge; + @Autowired @Qualifier("mspCardRepository") MspCardRepository mspCardRepository; @@ -191,8 +198,12 @@ public boolean generateCard(EventModel eventModel) { String printid = (String) eventModel.getEvent().getId(); org.json.simple.JSONObject obj = new org.json.simple.JSONObject(); - obj.put("photo",attributes.get(APPLICANT_PHOTO)); - obj.put("qrCode",attributes.get(QRCODE)); + Object photo = attributes.get(APPLICANT_PHOTO); + if (photo == null && isChildRegistration(attributes)) { + photo = defaultBabyPhoto; + } + obj.put("photo", photo); + obj.put("qrCode", attributes.get(QRCODE)); String fullAddress = getFullAddress(attributes); obj.put("address", (fullAddress.length() > 0) ? fullAddress : "N/A"); obj.put("locality", ((attributes.get("locality") != null && !attributes.get("locality").equals("")) ? attributes.get("locality").toString() : "N/A")); @@ -224,9 +235,17 @@ public boolean generateCard(EventModel eventModel) { return isPrinted; } + private boolean isChildRegistration(Map attributes) { + LocalDate dateOfBirth = LocalDate.parse((String) attributes.get("dateOfBirth")); + if ((LocalDate.now().getYear() - dateOfBirth.getYear()) <= defaultBabyAge) { + return true; + } + return false; + } + private String getFullAddress(Map attributes) { Object fullAddress[] = new Object[]{ attributes.get("addressLine1"), - attributes.get("addressLine2"), attributes.get("addressLine3")}; + attributes.get("addressLine2"), attributes.get("addressLine3"), attributes.get("landmark")}; fullAddress = Arrays.stream(fullAddress) .filter(s -> (s != null && !s.equals(""))) .toArray(Object[]::new); From 36decdd22fe89c4f79043f25d93e458f955a7fde Mon Sep 17 00:00:00 2001 From: Muralitharan K Date: Sun, 11 Dec 2022 23:12:20 +0530 Subject: [PATCH 21/23] Adding default photo for infant registration --- .../java/io/mosip/print/service/impl/PrintServiceImpl.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/io/mosip/print/service/impl/PrintServiceImpl.java b/src/main/java/io/mosip/print/service/impl/PrintServiceImpl.java index 22c4baa1..bddd3fb6 100644 --- a/src/main/java/io/mosip/print/service/impl/PrintServiceImpl.java +++ b/src/main/java/io/mosip/print/service/impl/PrintServiceImpl.java @@ -51,6 +51,7 @@ import java.sql.Timestamp; import java.time.LocalDate; import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.*; @Service @@ -164,6 +165,9 @@ public class PrintServiceImpl implements PrintService{ @Value("${mosip.print.infant.max.age:5}") private int defaultBabyAge; + @Value("${mosip.print.dob.formatter}") + private DateTimeFormatter dateTimeFormatter; + @Autowired @Qualifier("mspCardRepository") MspCardRepository mspCardRepository; @@ -236,7 +240,7 @@ public boolean generateCard(EventModel eventModel) { } private boolean isChildRegistration(Map attributes) { - LocalDate dateOfBirth = LocalDate.parse((String) attributes.get("dateOfBirth")); + LocalDate dateOfBirth = LocalDate.parse((String) attributes.get("dateOfBirth"), dateTimeFormatter); if ((LocalDate.now().getYear() - dateOfBirth.getYear()) <= defaultBabyAge) { return true; } From 509b95d032ea61f19579e20c625d07d932ca73a0 Mon Sep 17 00:00:00 2001 From: Muralitharan K Date: Mon, 12 Dec 2022 11:54:47 +0530 Subject: [PATCH 22/23] Issue fix on DOB format --- .../java/io/mosip/print/service/impl/PrintServiceImpl.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/java/io/mosip/print/service/impl/PrintServiceImpl.java b/src/main/java/io/mosip/print/service/impl/PrintServiceImpl.java index bddd3fb6..613480c7 100644 --- a/src/main/java/io/mosip/print/service/impl/PrintServiceImpl.java +++ b/src/main/java/io/mosip/print/service/impl/PrintServiceImpl.java @@ -165,13 +165,15 @@ public class PrintServiceImpl implements PrintService{ @Value("${mosip.print.infant.max.age:5}") private int defaultBabyAge; - @Value("${mosip.print.dob.formatter}") - private DateTimeFormatter dateTimeFormatter; + @Value("${mosip.print.dob.pattern}") + private String dobPattern; @Autowired @Qualifier("mspCardRepository") MspCardRepository mspCardRepository; + private DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(dobPattern); + public boolean generateCard(EventModel eventModel) { Map byteMap = new HashMap<>(); @@ -240,6 +242,7 @@ public boolean generateCard(EventModel eventModel) { } private boolean isChildRegistration(Map attributes) { + LocalDate dateOfBirth = LocalDate.parse((String) attributes.get("dateOfBirth"), dateTimeFormatter); if ((LocalDate.now().getYear() - dateOfBirth.getYear()) <= defaultBabyAge) { return true; From 3269a8351ecfedc9f61580ba7fd2d1fb02f932ce Mon Sep 17 00:00:00 2001 From: Muralitharan K Date: Mon, 12 Dec 2022 12:09:16 +0530 Subject: [PATCH 23/23] Issue fix on DOB format --- .../java/io/mosip/print/service/impl/PrintServiceImpl.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/main/java/io/mosip/print/service/impl/PrintServiceImpl.java b/src/main/java/io/mosip/print/service/impl/PrintServiceImpl.java index 613480c7..a998efa4 100644 --- a/src/main/java/io/mosip/print/service/impl/PrintServiceImpl.java +++ b/src/main/java/io/mosip/print/service/impl/PrintServiceImpl.java @@ -172,9 +172,6 @@ public class PrintServiceImpl implements PrintService{ @Qualifier("mspCardRepository") MspCardRepository mspCardRepository; - private DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(dobPattern); - - public boolean generateCard(EventModel eventModel) { Map byteMap = new HashMap<>(); String decodedCrdential = null; @@ -242,7 +239,7 @@ public boolean generateCard(EventModel eventModel) { } private boolean isChildRegistration(Map attributes) { - + DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(dobPattern); LocalDate dateOfBirth = LocalDate.parse((String) attributes.get("dateOfBirth"), dateTimeFormatter); if ((LocalDate.now().getYear() - dateOfBirth.getYear()) <= defaultBabyAge) { return true;