diff options
Diffstat (limited to '')
-rw-r--r-- | src/tools/jwt-parser/jwt-parser.service.ts | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/tools/jwt-parser/jwt-parser.service.ts b/src/tools/jwt-parser/jwt-parser.service.ts new file mode 100644 index 0000000..120a099 --- /dev/null +++ b/src/tools/jwt-parser/jwt-parser.service.ts @@ -0,0 +1,20 @@ +import jwt_decode, { InvalidTokenError } from 'jwt-decode'; + +interface JWT { + header: Map<string, unknown>; + payload: Map<string, unknown>; +} + +export function safe_jwt_decode(raw_jwt: string): JWT { + try { + const header = jwt_decode(raw_jwt, { header: true }) as Map<string, unknown>; + const payload = jwt_decode(raw_jwt) as Map<string, unknown>; + return { header: header, payload: payload }; + } catch (e) { + if (e instanceof InvalidTokenError) { + return { header: new Map<string, unknown>(), payload: new Map<string, unknown>() }; + } else { + throw e; + } + } +} |