import { Base64 } from 'js-base64';
|
|
export interface AccountInfo {
|
address: string;
|
amr: string[];
|
aud: string;
|
auth_time: number;
|
client_id: string;
|
email: string;
|
email_verified: string;
|
exp: number;
|
iat: number;
|
idp: string;
|
iss: string;
|
name: string;
|
sub: string;
|
role: string;
|
nbf: number;
|
}
|
|
export function getAccountInfoFromAccessToken(accessToken: string): Partial<AccountInfo> {
|
if (accessToken) {
|
const accessInfo = Base64.decode(accessToken.split(/\.(.+?)\./g)[1]);
|
return JSON.parse(accessInfo) as AccountInfo;
|
}
|
return {};
|
}
|
|
export function tokenIsExpired(userInfo: API.IdentityModelTokenCacheItem) {
|
const now = new Date().getTime();
|
const expiresIn = userInfo.expiresIn;
|
const expired = (now - new Date(userInfo.creationTime).getTime()) / 1000 > expiresIn - 300;
|
return expired;
|
}
|