From 11902f854e43bea4c5f2bf2d1aa0969a2d106928 Mon Sep 17 00:00:00 2001 From: simonhaenisch Date: Tue, 2 Jun 2020 14:11:29 +0200 Subject: [PATCH] feat(utils): validate jwt --- src/utils/index.ts | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/utils/index.ts b/src/utils/index.ts index 01bddf3..050164b 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -105,10 +105,16 @@ export const downloadFile = (data: string, mimeType: 'text/csv', fileName: strin /** * Parse a Jitbug JWT and return its expiry and user id from the payload. */ -export const parseJitbugJsonWebToken = (jwt: string): TokenPayload => { - const payload = JSON.parse(window.atob(jwt.split('.')[1].replace(/-/g, '+').replace(/_/g, '/'))); +export const parseJitbugJsonWebToken = (jwt: string): TokenPayload | void => { + const [header, payload, signature] = jwt.split('.'); - return { expires: payload.exp * 1000, uid: JSON.parse(payload.uid) }; + if (!header || !payload || !signature) { + return; + } + + const payloadContent = JSON.parse(window.atob(payload.replace(/-/g, '+').replace(/_/g, '/'))); + + return { expires: payloadContent.exp * 1000, uid: JSON.parse(payloadContent.uid) }; }; export interface TokenPayload {