2424@ RequiredArgsConstructor
2525public class VerifiableCredentialIssuanceWorkflowImpl implements VerifiableCredentialIssuanceWorkflow {
2626
27-
2827 private final RemoteSignatureService remoteSignatureService ;
2928 private final VerifiableCredentialService verifiableCredentialService ;
3029 private final AppConfig appConfig ;
@@ -35,7 +34,6 @@ public class VerifiableCredentialIssuanceWorkflowImpl implements VerifiableCrede
3534 private final TrustFrameworkService trustFrameworkService ;
3635 private final LEARCredentialEmployeeFactory credentialEmployeeFactory ;
3736
38-
3937 @ Override
4038 public Mono <Void > completeIssuanceCredentialProcess (String processId , String type , IssuanceRequest issuanceRequest ) {
4139 return verifiableCredentialService .generateVc (processId , type , issuanceRequest )
@@ -47,11 +45,9 @@ public Mono<Void> completeIssuanceCredentialProcess(String processId, String typ
4745 }
4846
4947 @ Override
50- public Mono <VerifiableCredentialResponse > generateVerifiableCredentialResponse (
51- String processId ,
52- CredentialRequest credentialRequest ,
53- String token
54- ) {
48+ public Mono <VerifiableCredentialResponse > generateVerifiableCredentialResponse (String processId ,
49+ CredentialRequest credentialRequest ,
50+ String token ) {
5551 try {
5652 JWSObject jwsObject = JWSObject .parse (token );
5753 String authServerNonce = jwsObject .getPayload ().toJSONObject ().get ("jti" ).toString ();
@@ -65,32 +61,32 @@ public Mono<VerifiableCredentialResponse> generateVerifiableCredentialResponse(
6561 }
6662 })
6763 .flatMap (subjectDid ->
68- deferredCredentialMetadataService .getOperationModeByAuthServerNonce (authServerNonce )
69- .flatMap (operationMode ->
70- verifiableCredentialService .buildCredentialResponse (processId , subjectDid , authServerNonce , credentialRequest .format (), token , operationMode )
71- .flatMap (credentialResponse -> {
72- if (operationMode .equals (ASYNC )) {
73- return deferredCredentialMetadataService .getProcedureIdByAuthServerNonce (authServerNonce )
74- .flatMap (credentialProcedureService ::getSignerEmailFromDecodedCredentialByProcedureId )
75- .flatMap (email ->
76- emailService .sendPendingCredentialNotification (email , "Pending Credential" )
77- .then (Mono .just (credentialResponse ))
78- );
79- } else if (operationMode .equals (SYNC )) {
80- return deferredCredentialMetadataService .getProcedureIdByAuthServerNonce (authServerNonce )
81- .flatMap (id -> credentialProcedureService .updateCredentialProcedureCredentialStatusToValidByProcedureId (id )
82- .then (credentialProcedureService .getDecodedCredentialByProcedureId (id )
83- .flatMap (decodedCredential -> processDecodedCredential (processId ,decodedCredential ))
84- )
85- )
86- .then (deferredCredentialMetadataService .deleteDeferredCredentialMetadataByAuthServerNonce (authServerNonce ))
87- .then (Mono .just (credentialResponse ));
88- } else {
89- return Mono .error (new IllegalArgumentException ("Unknown operation mode: " + operationMode ));
90- }
64+ deferredCredentialMetadataService .getOperationModeByAuthServerNonce (authServerNonce )
65+ .flatMap (operationMode ->
66+ verifiableCredentialService .buildCredentialResponse (processId , subjectDid , authServerNonce , credentialRequest .format (), token , operationMode )
67+ .flatMap (credentialResponse -> {
68+ if (operationMode .equals (ASYNC )) {
69+ return deferredCredentialMetadataService .getProcedureIdByAuthServerNonce (authServerNonce )
70+ .flatMap (credentialProcedureService ::getSignerEmailFromDecodedCredentialByProcedureId )
71+ .flatMap (email ->
72+ emailService .sendPendingCredentialNotification (email , "Pending Credential" )
73+ .then (Mono .just (credentialResponse ))
74+ );
75+ } else if (operationMode .equals (SYNC )) {
76+ return deferredCredentialMetadataService .getProcedureIdByAuthServerNonce (authServerNonce )
77+ .flatMap (id -> credentialProcedureService .updateCredentialProcedureCredentialStatusToValidByProcedureId (id )
78+ .then (credentialProcedureService .getDecodedCredentialByProcedureId (id )
79+ .flatMap (decodedCredential -> processDecodedCredential (processId , decodedCredential ))
80+ )
81+ )
82+ .then (deferredCredentialMetadataService .deleteDeferredCredentialMetadataByAuthServerNonce (authServerNonce ))
83+ .then (Mono .just (credentialResponse ));
84+ } else {
85+ return Mono .error (new IllegalArgumentException ("Unknown operation mode: " + operationMode ));
9186 }
92- )
93- )
87+ }
88+ )
89+ )
9490 );
9591 } catch (ParseException e ) {
9692 log .error ("Error parsing the accessToken" , e );
@@ -126,18 +122,6 @@ public Mono<VerifiableCredentialResponse> generateVerifiableCredentialDeferredRe
126122 @ Override
127123 public Mono <Void > signDeferredCredential (String unsignedCredential , String userId , UUID credentialId , String token ) {
128124 return null ;
129- // return verifiableCredentialService.generateDeferredCredentialResponse(unsignedCredential)
130- // .flatMap(vcPayload -> {
131- // SignatureRequest signatureRequest = SignatureRequest.builder()
132- // .configuration(SignatureConfiguration.builder().type(SignatureType.JADES).parameters(Collections.emptyMap()).build())
133- // .data(vcPayload)
134- // .build();
135- // return remoteSignatureService.sign(signatureRequest, token)
136- // .publishOn(Schedulers.boundedElastic())
137- // .map(SignedData::data);
138- // })
139- // .flatMap(signedCredential -> credentialManagementService.updateCredential(signedCredential, credentialId, userId))
140- // .onErrorResume(e -> Mono.error(new RuntimeException("Failed to sign and update the credential.", e)));
141125 }
142126
143127 private Mono <String > extractDidFromJwtProof (String jwtProof ) {
@@ -157,18 +141,18 @@ private Mono<Void> processDecodedCredential(String processId, String decodedCred
157141 LEARCredentialEmployeeJwtPayload learCredentialEmployeeJwtPayload = credentialEmployeeFactory .mapStringToLEARCredentialEmployee (decodedCredential );
158142
159143 String signerOrgIdentifier = learCredentialEmployeeJwtPayload .learCredentialEmployee ().credentialSubject ().mandate ().signer ().organizationIdentifier ();
160- if (signerOrgIdentifier == null || signerOrgIdentifier .isBlank () ) {
144+ if (signerOrgIdentifier == null || signerOrgIdentifier .isBlank ()) {
161145 log .error ("ProcessID: {} Signer Organization Identifier connot be null or empty" , processId );
162146 return Mono .error (new IllegalArgumentException ("Organization Identifier not valid" ));
163147 }
164148
165149 String mandatorOrgIdentifier = learCredentialEmployeeJwtPayload .learCredentialEmployee ().credentialSubject ().mandate ().mandator ().organizationIdentifier ();
166- if (mandatorOrgIdentifier == null || mandatorOrgIdentifier .isBlank () ) {
150+ if (mandatorOrgIdentifier == null || mandatorOrgIdentifier .isBlank ()) {
167151 log .error ("ProcessID: {} Mandator Organization Identifier connot be null or empty" , processId );
168152 return Mono .error (new IllegalArgumentException ("Organization Identifier not valid" ));
169153 }
170154
171- return saveToTrustFramework (processId ,signerOrgIdentifier , mandatorOrgIdentifier );
155+ return saveToTrustFramework (processId , signerOrgIdentifier , mandatorOrgIdentifier );
172156 }
173157
174158 private Mono <Void > saveToTrustFramework (String processId , String signerOrgIdentifier , String mandatorOrgIdentifier ) {
@@ -179,7 +163,7 @@ private Mono<Void> saveToTrustFramework(String processId, String signerOrgIdenti
179163 return trustFrameworkService .validateDidFormat (processId , signerDid )
180164 .flatMap (isValid -> registerDidIfValid (processId , signerDid , isValid ))
181165 .then (trustFrameworkService .validateDidFormat (processId , mandatorDid )
182- .flatMap (isValid -> registerDidIfValid (processId , mandatorDid ,isValid )));
166+ .flatMap (isValid -> registerDidIfValid (processId , mandatorDid , isValid )));
183167 }
184168
185169 private Mono <Void > registerDidIfValid (String processId , String did , boolean isValid ) {
0 commit comments