From d4280d1fda2f4809274793e7bd49f484f57a883e Mon Sep 17 00:00:00 2001 From: Parker Date: Mon, 4 Nov 2024 21:00:42 -0600 Subject: Continue JWT implementation - add refresh token --- app/js/jwt.js | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 app/js/jwt.js (limited to 'app/js/jwt.js') 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 -- cgit v1.2.3-70-g09d2