aboutsummaryrefslogtreecommitdiff
path: root/src/tools/jwt-parser/jwt-parser.service.ts
blob: 120a09904fcca5f658ee609579a2be4a5272febf (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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;
    }
  }
}