43 lines
978 B
JavaScript
43 lines
978 B
JavaScript
export const parseJWT = (token) => {
|
|
const base64Url = token.split('.')[1];
|
|
const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');
|
|
const jsonPayload = decodeURIComponent(
|
|
atob(base64)
|
|
.split('')
|
|
.map((c) => `%${`00${c.charCodeAt(0).toString(16)}`.slice(-2)}`)
|
|
.join('')
|
|
);
|
|
|
|
return JSON.parse(jsonPayload);
|
|
};
|
|
|
|
const keyMap = {
|
|
ao: 'start_audio_off',
|
|
ctoe: 'close_tab_on_exit',
|
|
d: 'domainId',
|
|
eje: 'eject_after_elapsed',
|
|
ejt: 'eject_at_token_exp',
|
|
er: 'enable_recording',
|
|
exp: 'exp',
|
|
iat: 'createdAt',
|
|
nbf: 'nbf',
|
|
o: 'isOwner',
|
|
r: 'room',
|
|
rome: 'redirect_on_meeting_exit',
|
|
sr: 'start_cloud_recording',
|
|
ss: 'enable_screenshare',
|
|
u: 'username',
|
|
ud: 'id',
|
|
uil: 'lang',
|
|
vo: 'start_video_off',
|
|
};
|
|
|
|
export const parseMeetingToken = (token) => {
|
|
const parsed = parseJWT(token);
|
|
const result = {};
|
|
for (const [key, val] of Object.entries(parsed)) {
|
|
result[keyMap[key]] = val;
|
|
}
|
|
return result;
|
|
};
|