diff --git a/api/src/stores/main.ts b/api/src/stores/main.ts index 777782e..422c8c1 100644 --- a/api/src/stores/main.ts +++ b/api/src/stores/main.ts @@ -75,19 +75,13 @@ export const useMainStore = defineStore({ async logout() { if (!this.session || !this.session.token) return false; - LocalStorage.clear(); - try { const token = this.session.token; - this.$patch({ - session: undefined, - user: undefined, - }); await api.delete(`/auth/${token}`); } catch (error) { return false; } finally { - SessionStorage.clear(); + this.handleLoggedOut( ); } return true; }, @@ -151,6 +145,15 @@ export const useMainStore = defineStore({ async setShortcuts() { await api.put(`users/${this.currentUser.userid}/shortcuts`, this.shortcuts); }, + handleLoggedOut() { + LocalStorage.clear(); + + this.$patch({ + session: undefined, + user: undefined, + }); + SessionStorage.clear(); + }, }, }); diff --git a/src/boot/axios.ts b/src/boot/axios.ts index 10b9e00..3a5ede1 100644 --- a/src/boot/axios.ts +++ b/src/boot/axios.ts @@ -20,7 +20,7 @@ export default boot(({ router }) => { /*** * Intercept responses - * - filter 401 --> logout + * - filter 401 --> handleLoggedOut * - filter timeout or 502-504 --> backendOffline */ api.interceptors.response.use( @@ -43,7 +43,7 @@ export default boot(({ router }) => { query: { redirect: next }, }); } else if (e.response && e.response.status == 401) { - void store.logout(); + void store.handleLoggedOut(); if (current.name !== 'login') { await router.push({ name: 'login', diff --git a/src/boot/login.ts b/src/boot/login.ts index a8ca1dc..7695575 100644 --- a/src/boot/login.ts +++ b/src/boot/login.ts @@ -12,7 +12,7 @@ export default boot(({ router }) => { // Secured area (LOGIN REQUIRED) // Check login is ok if (!store.session || store.session.expires <= new Date()) { - void store.logout(); + void store.handleLoggedOut(); return next({ name: 'login', query: { redirect: to.fullPath } }); }