aboutsummaryrefslogtreecommitdiff
path: root/app/js/jwt.js
diff options
context:
space:
mode:
authorParker <contact@pkrm.dev>2024-11-04 21:00:42 -0600
committerParker <contact@pkrm.dev>2024-11-04 21:00:42 -0600
commitd4280d1fda2f4809274793e7bd49f484f57a883e (patch)
tree23085015b92d916d304968b396df8edceca037c5 /app/js/jwt.js
parent8ae8c5c454ba42e8f56f415d33bbaaac7d1a37ec (diff)
Continue JWT implementation - add refresh token
Diffstat (limited to 'app/js/jwt.js')
-rw-r--r--app/js/jwt.js22
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