UNPKG

@quienxmi/sdk-iframe-project

Version:

SDK to control an iframe for requesting quotes via Qxm.

30 lines (27 loc) 941 B
import { DecodedToken } from '../interfaces/index'; const requiredKeys = [ 'iss', 'iat', 'exp', 'data' ]; function checkKeysInObject(jsonPayload: DecodedToken): boolean { const payloadKeys = Object.keys(jsonPayload); return requiredKeys.every(key => payloadKeys.includes(key)); } export function decodeToken(token: string) { try { const base64Url = token.split('.')[1]; const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/'); const jsonPayload: DecodedToken = JSON.parse(decodeURIComponent(atob(base64).split('').map(function (c) { return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2); }).join(''))); const currentTime = Math.floor(Date.now() / 1000); if (jsonPayload.exp > currentTime && checkKeysInObject(jsonPayload)) { return jsonPayload; } return null; } catch (err) { return null; } }