UNPKG

onfido-sdk-ui

Version:

JavaScript SDK view layer for Onfido identity verification

71 lines (58 loc) 1.53 kB
import { currentSeconds } from './index' import type { UrlsConfig } from '~types/commons' import type { EnterpriseFeatures } from '~types/enterprise' type JWTPayload = { app?: string client_uuid?: string ref?: string } type JWT = { exp: number payload: JWTPayload uuid: string enterprise_features: EnterpriseFeatures urls: UrlsConfig } export const parseJwt = (token?: string): JWT => { if (!token) { throw new Error('Token undefined') } const base64Url = token.split('.')[1] const base64 = base64Url.replace('-', '+').replace('_', '/') return JSON.parse(atob(base64)) } export const jwtExpired = (token: string): boolean => { const { exp: expiresAt } = parseJwt(token) return currentSeconds() > expiresAt } export const getUrlsFromJWT = (token: string): UrlsConfig => { const urls: UrlsConfig = {} try { const jwt = parseJwt(token) Object.assign(urls, jwt.urls) } catch (err) { console.error('Invalid token:', err.message) } return urls } export const getEnterpriseFeaturesFromJWT = ( token: string ): EnterpriseFeatures => { try { const jwt = parseJwt(token) return jwt.enterprise_features } catch (err) { console.error('Invalid token:', err.message) return {} } } export const getPayloadFromJWT = (token: string): JWTPayload => { const payload: JWTPayload = {} try { const jwt = parseJwt(token) Object.assign(payload, jwt.payload) } catch (err) { console.error('Invalid token:', err.message) } return payload }