From c9755bee7ca912ff34466ba3a53e08be66e11019 Mon Sep 17 00:00:00 2001 From: Jim Pollaro <30908497+pollaro@users.noreply.github.com> Date: Thu, 12 Jul 2018 15:07:08 -0500 Subject: [PATCH] Logout Changes #9915 (#10022) * Added session check before route changes, but express isn't finding route * Added a logout component. Changed route to logout on server. Typing 'logout' in URL will logout of Vue + Express * Removed commented text from previous version * Updated logout function to comply with formatting and eliminate unused blocks * Added package-lock.json back * package-lock.json * recreated package-lock file * fix(auth): allow logout from direct visit to /logout path * fix(merge): clean up more misc changes * fix(merge): remove extra file --- webpack/config/index.js | 2 +- website/client/components/auth/logout.vue | 13 +++++++++++++ website/client/router.js | 2 ++ website/client/store/actions/auth.js | 2 +- website/server/controllers/top-level/auth.js | 4 ++-- 5 files changed, 19 insertions(+), 4 deletions(-) create mode 100644 website/client/components/auth/logout.vue diff --git a/webpack/config/index.js b/webpack/config/index.js index 463e6f3028..35fa37adc8 100644 --- a/webpack/config/index.js +++ b/webpack/config/index.js @@ -62,7 +62,7 @@ module.exports = { target: DEV_BASE_URL, changeOrigin: true, }, - '/logout': { + '/logout-server': { target: DEV_BASE_URL, changeOrigin: true, }, diff --git a/website/client/components/auth/logout.vue b/website/client/components/auth/logout.vue new file mode 100644 index 0000000000..b826794272 --- /dev/null +++ b/website/client/components/auth/logout.vue @@ -0,0 +1,13 @@ + diff --git a/website/client/router.js b/website/client/router.js index bd74858d2c..6368e39744 100644 --- a/website/client/router.js +++ b/website/client/router.js @@ -27,6 +27,7 @@ const PrivacyPage = () => import(/* webpackChunkName: "static" */'./components/s const TermsPage = () => import(/* webpackChunkName: "static" */'./components/static/terms'); const RegisterLoginReset = () => import(/* webpackChunkName: "auth" */'./components/auth/registerLoginReset'); +const Logout = () => import(/* webpackChunkName: "auth" */'./components/auth/logout'); // User Pages // const StatsPage = () => import(/* webpackChunkName: "user" */'./components/userMenu/stats'); @@ -105,6 +106,7 @@ const router = new VueRouter({ routes: [ { name: 'register', path: '/register', component: RegisterLoginReset, meta: {requiresLogin: false} }, { name: 'login', path: '/login', component: RegisterLoginReset, meta: {requiresLogin: false} }, + { name: 'logout', path: '/logout', component: Logout }, { name: 'resetPassword', path: '/reset-password', component: RegisterLoginReset, meta: {requiresLogin: false} }, { name: 'tasks', path: '/', component: UserTasks }, { diff --git a/website/client/store/actions/auth.js b/website/client/store/actions/auth.js index d5f8ebb618..02fd27d286 100644 --- a/website/client/store/actions/auth.js +++ b/website/client/store/actions/auth.js @@ -68,5 +68,5 @@ export async function socialAuth (store, params) { export function logout () { localStorage.removeItem(LOCALSTORAGE_AUTH_KEY); localStorage.removeItem(LOCALSTORAGE_SOCIAL_AUTH_KEY); - window.location.href = '/logout'; + window.location.href = '/logout-server'; } diff --git a/website/server/controllers/top-level/auth.js b/website/server/controllers/top-level/auth.js index bfda8ab7e2..f7fd76fe2b 100644 --- a/website/server/controllers/top-level/auth.js +++ b/website/server/controllers/top-level/auth.js @@ -5,7 +5,7 @@ let api = {}; // Internal authentication routes // Set a new password after having requested a password reset (GET route to input password) -api.resetPasswordSetNewOne = { +api.resetPasswordSetNewOne = { method: 'GET', url: '/static/user/auth/local/reset-password-set-new-one', runCron: false, @@ -24,7 +24,7 @@ api.resetPasswordSetNewOne = { // Logout the user from the website. api.logout = { method: 'GET', - url: '/logout', + url: '/logout-server', async handler (req, res) { if (req.logout) req.logout(); // passportjs method req.session = null;