diff options
Diffstat (limited to 'app')
-rw-r--r-- | app/js/jwt.js | 22 | ||||
-rw-r--r-- | app/templates/login.html | 16 |
2 files changed, 29 insertions, 9 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 diff --git a/app/templates/login.html b/app/templates/login.html index 25ce3b6..b41d15c 100644 --- a/app/templates/login.html +++ b/app/templates/login.html @@ -89,22 +89,20 @@ // Prevent default form submission event.preventDefault(); - // Get form data const formData = new FormData(this); - - console.log(formData) - - // Send POST request to /login containing form data - const response = await fetch('/login', { + // Send POST request to /api/token containing form data + const response = await fetch('/api/token', { method: 'POST', body: formData }); + const data = await response.json(); - data = await response.json() - - if (data.status != "success") { + if (data.response != 200) { document.getElementById('error').style.display = 'block'; } else { + // Save the tokens in localStorage + window.localStorage.token = data.token; + window.localStorage.refreshToken = data.refreshToken; window.location.href = '/dashboard'; } }); |