@@ -118,7 +118,13 @@ private CredentialOfferEmailNotificationInfo extractCredentialOfferEmailInfo(Pre
118118 yield new CredentialOfferEmailNotificationInfo (email , user , org );
119119 }
120120 case LEAR_CREDENTIAL_MACHINE -> {
121- String email = payload .get (MANDATOR ).get (EMAIL ).asText ();
121+ String email ;
122+ if (preSubmittedCredentialDataRequest .credentialOwnerEmail () == null || preSubmittedCredentialDataRequest .credentialOwnerEmail ().isBlank ()) {
123+ email = payload .get (MANDATOR ).get (EMAIL ).asText ();
124+ log .debug ("No credential owner email found in presubmitted data. Using mandator email: {}" , payload .get (MANDATOR ).get (EMAIL ).asText ());
125+ } else {
126+ email = preSubmittedCredentialDataRequest .credentialOwnerEmail ();
127+ }
122128 String org = payload .get (MANDATOR ).get (ORGANIZATION ).asText ();
123129 String name = payload .get (MANDATOR ).get (COMMON_NAME ).asText ();
124130 yield new CredentialOfferEmailNotificationInfo (email , name , org );
@@ -264,15 +270,24 @@ private Mono<CredentialResponse> handleOperationMode(
264270 Mono <Void > upd = !CredentialStatusEnum .PEND_SIGNATURE .toString ().equals (status )
265271 ? credentialProcedureService .updateCredentialProcedureCredentialStatusToValidByProcedureId (id )
266272 : Mono .empty ();
267- return upd .then (credentialProcedureService .getDecodedCredentialByProcedureId (id ));
273+ return upd .then (credentialProcedureService .getDecodedCredentialByProcedureId (id )
274+ .zipWith (credentialProcedureService .getCredentialProcedureById (id )));
268275 })
269- .flatMap (decoded -> {
276+ .flatMap (tuple -> {
277+ String decoded = tuple .getT1 ();
278+ CredentialProcedure updatedCredentialProcedure = tuple .getT2 ();
279+
270280 CredentialType typeEnum = CredentialType .valueOf (credentialProcedure .getCredentialType ());
271281 if (typeEnum == CredentialType .LEAR_CREDENTIAL_EMPLOYEE ) {
272282 return getMandatorOrganizationIdentifier (processId , decoded );
273283 }
274284
275285 if (deferred .getResponseUri () != null && !deferred .getResponseUri ().isBlank ()) {
286+ String encodedCredential = updatedCredentialProcedure .getCredentialEncoded ();
287+ if (encodedCredential == null || encodedCredential .isBlank ()) {
288+ return Mono .error (new IllegalStateException ("Encoded credential not found for procedureId: " + updatedCredentialProcedure .getProcedureId ()));
289+ }
290+
276291 log .info ("Sending VC to response URI: {}" , deferred .getResponseUri ());
277292 return credentialProcedureService .getCredentialId (credentialProcedure )
278293 .doOnNext (credentialId -> log .debug ("Using credentialId for delivery: {}" , credentialId ))
@@ -281,7 +296,7 @@ private Mono<CredentialResponse> handleOperationMode(
281296 .flatMap (tokenResponse ->
282297 credentialDeliveryService .sendVcToResponseUri (
283298 deferred .getResponseUri (),
284- decoded ,
299+ encodedCredential ,
285300 credentialId ,
286301 credentialProcedure .getOwnerEmail (),
287302 tokenResponse .accessToken ()
0 commit comments