aboutsummaryrefslogtreecommitdiff
path: root/app/js/jwt.js
blob: 43c2e6c155e296258e0d169c74c31f44cfdca16b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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;
}