22 lines
680 B
JavaScript
22 lines
680 B
JavaScript
function parseJwt (token) {
|
|
var base64Url = token.split('.')[1];
|
|
var base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');
|
|
var jsonPayload = decodeURIComponent(window.atob(base64).split('').map(function(c) {
|
|
return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
|
|
}).join(''));
|
|
|
|
return JSON.parse(jsonPayload);
|
|
}
|
|
|
|
function isJwtExpired (token) {
|
|
var jwt = parseJwt(token);
|
|
return jwt.exp < Date.now() / 1000;
|
|
}
|
|
|
|
async function refreshAccessToken (refreshToken) {
|
|
const data = await fetch('/api/refresh', {
|
|
method: 'POST',
|
|
headers: {'Authorization': 'Bearer ' + refreshToken}
|
|
});
|
|
return data.access_token;
|
|
} |