From 3770be4274eb98fec6c30ee0d9d6a2a01e1d4b07 Mon Sep 17 00:00:00 2001
From: clauspeterhuebner
Date: Wed, 23 Apr 2025 16:23:18 +0200
Subject: [PATCH] set validUntil in DisbersementLink by exp-claim of
jwt-payload
---
backend/src/graphql/model/DisbursementLink.ts | 6 ++++++
.../src/graphql/resolver/TransactionLinkResolver.ts | 13 ++++++++++---
2 files changed, 16 insertions(+), 3 deletions(-)
diff --git a/backend/src/graphql/model/DisbursementLink.ts b/backend/src/graphql/model/DisbursementLink.ts
index 87167d79a..d0c090cd5 100644
--- a/backend/src/graphql/model/DisbursementLink.ts
+++ b/backend/src/graphql/model/DisbursementLink.ts
@@ -26,6 +26,9 @@ export class DisbursementLink {
this.amount = new Decimal(disbursementPayload.amount)
this.memo = disbursementPayload.memo
this.code = disbursementPayload.redeemcode
+ if (disbursementPayload.exp) {
+ this.validUntil = new Date(disbursementPayload.exp)
+ }
}
@Field(() => Community)
@@ -48,4 +51,7 @@ export class DisbursementLink {
@Field(() => String)
code: string
+
+ @Field(() => Date)
+ validUntil: Date
}
diff --git a/backend/src/graphql/resolver/TransactionLinkResolver.ts b/backend/src/graphql/resolver/TransactionLinkResolver.ts
index 0eee2c991..d577b0bf2 100644
--- a/backend/src/graphql/resolver/TransactionLinkResolver.ts
+++ b/backend/src/graphql/resolver/TransactionLinkResolver.ts
@@ -190,7 +190,9 @@ export class TransactionLinkResolver {
)
if (
decodedPayload != null &&
- decodedPayload.tokentype === DisbursementJwtPayloadType.REDEEM_ACTIVATION_TYPE
+ decodedPayload.tokentype === DisbursementJwtPayloadType.REDEEM_ACTIVATION_TYPE &&
+ decodedPayload.exp &&
+ decodedPayload.exp > new Date().getTime()
) {
const disburseJwtPayload = new DisbursementJwtPayloadType(
decodedPayload.sendercommunityuuid as string,
@@ -224,7 +226,9 @@ export class TransactionLinkResolver {
let verifiedPayload: DisbursementJwtPayloadType | null = null
if (
jwtPayload != null &&
- jwtPayload.tokentype === DisbursementJwtPayloadType.REDEEM_ACTIVATION_TYPE
+ jwtPayload.tokentype === DisbursementJwtPayloadType.REDEEM_ACTIVATION_TYPE &&
+ jwtPayload.exp &&
+ jwtPayload.exp > new Date().getTime()
) {
verifiedPayload = new DisbursementJwtPayloadType(
jwtPayload.sendercommunityuuid as string,
@@ -265,7 +269,10 @@ export class TransactionLinkResolver {
)
return disbursementLink
} else {
- throw new LogError('Redeem with wrong type of JWT-Token! decodedPayload=', decodedPayload)
+ throw new LogError(
+ 'Redeem with wrong type of JWT-Token or expired! decodedPayload=',
+ decodedPayload,
+ )
}
}
}