From 9dc650dcee11d3b4c0396cc4d97af66858baede9 Mon Sep 17 00:00:00 2001 From: itaihanski Date: Tue, 12 Mar 2024 16:22:03 +0200 Subject: [PATCH] Make rexp optional --- lib/src/session/token.dart | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/lib/src/session/token.dart b/lib/src/session/token.dart index 34a2ad5..470c55e 100644 --- a/lib/src/session/token.dart +++ b/lib/src/session/token.dart @@ -117,8 +117,8 @@ class Token implements DescopeToken { final projectId = decoderIssuer(Claim.issuer.getTypedValue(claims)); final expiration = Claim.expiration.getTypedValue(claims); final expiresAt = DateTime.fromMillisecondsSinceEpoch(expiration * 1000, isUtc: true); - final refreshExpiration = Claim.refreshExpiration.getTypedValue(claims); - final refreshExpiresAt = refreshExpiration.isNotEmpty ? DateTime.parse(refreshExpiration) : null; + final refreshExpiration = Claim.refreshExpiration.getOptionalTypedValue(claims); + final refreshExpiresAt = refreshExpiration != null && refreshExpiration.isNotEmpty ? DateTime.parse(refreshExpiration) : null; final customClaims = claims.filterPrivateClaims(); return Token(jwt, id, projectId, expiresAt, refreshExpiresAt, customClaims, claims); } @@ -194,6 +194,14 @@ enum Claim { return Claim.values.any((element) => element.key == key); } + T? getOptionalTypedValue(Map claims) { + try { + return getTypedValue(claims); + } catch (e) { + return null; + } + } + T getTypedValue(Map claims) { final object = claims[key]; if (object == null) {