From f9a95317a2c250277a10aa00219a8d0190a7a5fe Mon Sep 17 00:00:00 2001 From: jedi Date: Sun, 7 Jan 2024 23:03:22 +0100 Subject: [PATCH] restore session from localstorage --- web/src/router.js | 4 ++++ web/src/store/index.js | 22 ++++++++++++---------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/web/src/router.js b/web/src/router.js index fde986d..5fb55e2 100644 --- a/web/src/router.js +++ b/web/src/router.js @@ -68,6 +68,10 @@ const routes = [ path: 'users/', name: 'users', component: AccessControl, meta: {requiresAuth: true, requiresPermission: 'delete_event'} }, + { + path: 'boxes/', name: 'admin_boxes', component: BoxesAdmin, meta: + {requiresAuth: true, requiresPermission: 'delete_event'} + }, ] }, {path: '/user', name: 'user', component: Empty, meta: {requiresAuth: true}}, diff --git a/web/src/store/index.js b/web/src/store/index.js index 44a09c0..5808e38 100644 --- a/web/src/store/index.js +++ b/web/src/store/index.js @@ -110,12 +110,14 @@ const store = new Vuex.Store({ }, isLoggedIn(state) { if (!state.local_loaded) { - state.remember = localStorage.getItem('remember') === 'true' - state.user = localStorage.getItem('user') - state.userPermissions = JSON.parse(localStorage.getItem('permissions') || '[]') - state.token = localStorage.getItem('token') - state.token_expiry = localStorage.getItem('token_expiry') - state.local_loaded = true + state.remember = localStorage.getItem('remember') === 'true'; + state.user = localStorage.getItem('user'); + //state.password = localStorage.getItem('password'); + state.userPermissions = JSON.parse(localStorage.getItem('permissions') || '[]'); + state.token = localStorage.getItem('token'); + state.token_expiry = localStorage.getItem('token_expiry'); + state.local_loaded = true; + axios.defaults.headers.common['Authorization'] = `Token ${state.token}`; } return state.user !== null && state.token !== null; @@ -234,7 +236,7 @@ const store = new Vuex.Store({ body: JSON.stringify({username: username, password: password}), credentials: 'omit' }).then(r => r.json()) - if (data.token) { + if (data && data.token) { commit('setToken', data); commit('setUser', username); commit('setPassword', password); @@ -251,14 +253,14 @@ const store = new Vuex.Store({ }, async reloadToken({commit, state}) { try { - if (data.password) { + if (state.password) { const data = await fetch('/api/2/login/', { method: 'POST', headers: {'Content-Type': 'application/json'}, body: JSON.stringify({username: state.user, password: state.password}), credentials: 'omit' - }).then(r => r.json()) - if (data.token) { + }).then(r => r.json()).catch(e => console.error(e)) + if (data && data.token) { commit('setToken', data); axios.defaults.headers.common['Authorization'] = `Token ${data.token}`; return true;