@@ -10,7 +10,7 @@ import it.pagopa.interop.commons.files.service.FileManager
10
10
import it .pagopa .interop .commons .logging .{CanLogContextFields , ContextFieldsToLog }
11
11
import it .pagopa .interop .commons .mail .model .PersistedTemplate
12
12
import it .pagopa .interop .commons .utils .TypeConversions ._
13
- import it .pagopa .interop .commons .utils .errors .GenericComponentErrors .ResourceConflictError
13
+ import it .pagopa .interop .commons .utils .errors .GenericComponentErrors .{ ResourceConflictError , ResourceNotFoundError }
14
14
import it .pagopa .interop .partymanagement .client .model .{PartyRole => PartyMgmtRole , Problem => _ }
15
15
import it .pagopa .interop .partyprocess .api .PublicApiService
16
16
import it .pagopa .interop .partyprocess .common .system .ApplicationConfiguration
@@ -82,16 +82,16 @@ class PublicApiServiceImpl(
82
82
83
83
validator <- signatureService.createDocumentValidator(Files .readAllBytes(contract._2.toPath))
84
84
_ <- SignatureValidationService .validateSignature(signatureValidationService.isDocumentSigned(validator))
85
- _ <- SignatureValidationService .validateSignature(signatureValidationService.verifyOriginalDocument(validator))
85
+ _ <- SignatureValidationService .validateSignature(signatureValidationService.verifyOriginalDocument(validator))
86
86
reports <- signatureValidationService.validateDocument(validator)
87
87
_ <- SignatureValidationService .validateSignature(
88
88
signatureValidationService.verifySignatureForm(validator),
89
89
signatureValidationService.verifySignature(reports),
90
90
signatureValidationService.verifyDigest(validator, token.checksum),
91
91
signatureValidationService.verifyManagerTaxCode(reports, legalUsers)
92
92
)
93
- logo <- getLogoFile(ApplicationConfiguration .emailLogoPath)
94
- product <- productManagementService.getProductById(institutionId.head.product)
93
+ logo <- getLogoFile(ApplicationConfiguration .emailLogoPath)
94
+ product <- productManagementService.getProductById(institutionId.head.product)
95
95
onboardingMailParameters <- getOnboardingMailParameters(product.name)
96
96
emails = legalEmails ++ institutionEmail.toSeq
97
97
_ <- sendOnboardingCompleteEmail(emails, onboardingMailParameters, logo)
@@ -153,7 +153,36 @@ class PublicApiServiceImpl(
153
153
logger.error(" Error while invalidating onboarding for token identified with {}" , tokenId, ex)
154
154
val errorResponse : Problem = problemOf(StatusCodes .BadRequest , InvalidateOnboardingError )
155
155
invalidateOnboarding400(errorResponse)
156
+ }
157
+ }
158
+
159
+ /**
160
+ * Code: 200, Message: successful operation, DataType: TokenId
161
+ * Code: 400, Message: Invalid ID supplied, DataType: Problem
162
+ * Code: 404, Message: Token not found, DataType: Problem
163
+ * Code: 409, Message: Token already consumed, DataType: Problem
164
+ */
165
+ override def verifyToken (tokenId : String )(implicit
166
+ toEntityMarshallerTokenId : ToEntityMarshaller [TokenId ],
167
+ toEntityMarshallerProblem : ToEntityMarshaller [Problem ],
168
+ contexts : Seq [(String , String )]
169
+ ): Route = {
170
+ val result : Future [TokenId ] = for {
171
+ tokenIdUUID <- tokenId.toFutureUUID
172
+ token <- partyManagementService.verifyToken(tokenIdUUID)
173
+ } yield TokenId (id = token.id)
156
174
175
+ onComplete(result) {
176
+ case Success (tokenId) => verifyToken200(tokenId)
177
+ case Failure (ex : ResourceNotFoundError ) =>
178
+ logger.error(s " Token not found " , ex)
179
+ verifyToken404(problemOf(StatusCodes .NotFound , ex))
180
+ case Failure (ex : ResourceConflictError ) =>
181
+ logger.error(s " Token already consumed " , ex)
182
+ verifyToken409(problemOf(StatusCodes .Conflict , ex))
183
+ case Failure (ex) =>
184
+ logger.error(s " Verifying token failed " , ex)
185
+ verifyToken400(problemOf(StatusCodes .InternalServerError , TokenVerificationFatalError (tokenId, ex.getMessage)))
157
186
}
158
187
}
159
188
0 commit comments