From c63abfaaeffaf77adfd1ccd7cf53ca486911e086 Mon Sep 17 00:00:00 2001 From: Anthony Kinsey Date: Tue, 23 Nov 2021 14:39:45 -1000 Subject: [PATCH] fix: issue with user showing as logged in even after their session expired --- src/composables/stores/auth.js | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/src/composables/stores/auth.js b/src/composables/stores/auth.js index fb6fbc0b..4646df46 100644 --- a/src/composables/stores/auth.js +++ b/src/composables/stores/auth.js @@ -46,7 +46,7 @@ export default { BanStore.initBanNotice(user) $prefs.fetch() socketLogin(user) - }).catch(() => {}) + }).catch(() => userCleanup(`Goodbye ${user.username}, your session has expired`)) const login = (username, password, rememberMe) => authApi.login({ username, password, rememberMe }) .then(dbUser => { @@ -59,18 +59,20 @@ export default { }).catch(() => {}) const logout = () => authApi.logout() - .then(() => { - delete user.token // clear token to invalidate session immediately - $appCache.delete(AUTH_KEY) - $prefs.clear() - BanStore.clearBanNotice() - $alertStore.warn(`Goodbye ${user.username}, you have successfully logged out!`) - // redirect to home on logout - if ($route.meta.requiresAuth && $route.path !== '/') $router.push({ path: '/' }) - // delay clearing reactive user to give css transitions time to complete - setTimeout(() => Object.assign(user, cloneDeep(emtpyUser)), 500) - socketLogout(emtpyUser) - }).catch(() => {}) + .then(() => userCleanup(`Goodbye ${user.username}, you have successfully logged out!`)) + + const userCleanup = msg => { + delete user.token // clear token to invalidate session immediately + $appCache.delete(AUTH_KEY) + $prefs.clear() + BanStore.clearBanNotice() + $alertStore.warn(msg) + // redirect to home on logout + if ($route.meta.requiresAuth && $route.path !== '/') $router.push({ path: '/' }) + // delay clearing reactive user to give css transitions time to complete + setTimeout(() => Object.assign(user, cloneDeep(emtpyUser)), 500) + socketLogout(emtpyUser) + } const register = (email, username, password) => authApi.register({ email, username, password }) .then(dbUser => {