aboutsummaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/js/jwt.js22
-rw-r--r--app/templates/login.html16
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';
}
});