diff options
author | Parker <contact@pkrm.dev> | 2024-11-04 21:00:42 -0600 |
---|---|---|
committer | Parker <contact@pkrm.dev> | 2024-11-04 21:00:42 -0600 |
commit | d4280d1fda2f4809274793e7bd49f484f57a883e (patch) | |
tree | 23085015b92d916d304968b396df8edceca037c5 /app/js/jwt.js | |
parent | 8ae8c5c454ba42e8f56f415d33bbaaac7d1a37ec (diff) |
Continue JWT implementation - add refresh token
Diffstat (limited to 'app/js/jwt.js')
-rw-r--r-- | app/js/jwt.js | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/app/js/jwt.js b/app/js/jwt.js new file mode 100644 index 0000000..43c2e6c --- /dev/null +++ b/app/js/jwt.js @@ -0,0 +1,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; +}
\ No newline at end of file |