fix: reload the page when login token expired (#1839)

This commit is contained in:
Himself65
2023-04-06 18:26:53 -05:00
committed by GitHub
parent 5ac36b6f0a
commit efe5444816
10 changed files with 80 additions and 16 deletions

View File

@@ -29,14 +29,16 @@ describe('storage', () => {
describe('utils', () => {
test('isExpired', async () => {
const now = Math.floor(Date.now() / 1000);
expect(isExpired({ exp: now + 1 } as AccessTokenMessage)).toBeFalsy();
expect(isExpired({ exp: now + 1 } as AccessTokenMessage, 0)).toBeFalsy();
const promise = new Promise<void>(resolve => {
setTimeout(() => {
expect(isExpired({ exp: now + 1 } as AccessTokenMessage)).toBeTruthy();
expect(
isExpired({ exp: now + 1 } as AccessTokenMessage, 0)
).toBeTruthy();
resolve();
}, 2000);
});
expect(isExpired({ exp: now - 1 } as AccessTokenMessage)).toBeTruthy();
expect(isExpired({ exp: now - 1 } as AccessTokenMessage, 0)).toBeTruthy();
await promise;
});
});

View File

@@ -43,9 +43,13 @@ export function parseIdToken(token: string): AccessTokenMessage {
return JSON.parse(decode(token.split('.')[1]));
}
export const isExpired = (token: AccessTokenMessage): boolean => {
export const isExpired = (
token: AccessTokenMessage,
// earlier than `before`, consider it expired
before = 60 // 1 minute
): boolean => {
const now = Math.floor(Date.now() / 1000);
return token.exp < now;
return token.exp < now - before;
};
export const setLoginStorage = (login: LoginResponse) => {