From 41f6c5d2b7ba0a61eb858191c4e46566aadf89fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timoth=C3=A9e=20Poussard?= <tpoussard@neogeo.fr> Date: Wed, 9 Feb 2022 12:40:55 +0100 Subject: [PATCH] disable index button if shared project on login page --- src/App.vue | 5 ++-- src/router/index.js | 6 +---- src/store/index.js | 42 ++++++++++++++++++++------------ src/views/registration/Login.vue | 4 +-- 4 files changed, 33 insertions(+), 24 deletions(-) diff --git a/src/App.vue b/src/App.vue index 95966e80..af053b2d 100644 --- a/src/App.vue +++ b/src/App.vue @@ -11,6 +11,7 @@ <div class="menu container"> <div class="ui inverted icon menu"> <router-link + :is="isSharedProject ? 'span' : 'router-link'" :to="isSharedProject ? '' : '/'" :class="['header item', {disable: isSharedProject}]" > @@ -122,7 +123,7 @@ </a> <router-link v-else-if="!user && !SSO_LOGIN_URL" - to="/connexion/" + :to="{ name : 'login' }" class="item" > Se connecter @@ -175,7 +176,7 @@ </a> <router-link v-else-if="!user && !SSO_LOGIN_URL" - to="/connexion/" + :to="{ name : 'login' }" class="item" > Se Connecter diff --git a/src/router/index.js b/src/router/index.js index df9c27dc..7a050554 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -4,10 +4,6 @@ import Projects from '../views/Projects.vue'; Vue.use(VueRouter); -//* store initial route before redirect to login page -//* in order to turn back to shared project afterwards (not memorized in router history at page load) -window.initialRoute = window.location.href; - let projectBase = 'projet'; if (window.location.pathname.includes('projet-partage')) { projectBase = 'projet-partage'; @@ -20,7 +16,7 @@ const routes = [ component: Projects }, { - path: '/connexion/', + path: `${projectBase === 'projet' ? '': '/' + projectBase + '/:slug'}/connexion/`, name: 'login', component: () => import('../views/registration/Login.vue') }, diff --git a/src/store/index.js b/src/store/index.js index 4631cbb4..f4ed8a51 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -138,21 +138,8 @@ export default new Vuex.Store({ }) .then((response) => { if (response.status === 200 && response.data) { - // * use stored previous route to go back after login if page not open on login at first - let routerHistory = ''; - if (router.options.routerHistory[0] !== undefined) { - routerHistory = router.options.routerHistory[0].name !== 'login' ? router.options.routerHistory : '/'; - } else { - routerHistory = '/'; - } commit('SET_USER', response.data.user); - - if (routerHistory === '/' && window.initialRoute.includes('projet-partage')) { - window.location.replace(window.initialRoute); - } else { // ToDo : not working at page load, routerHistory filled afterwards, could try history.back() - router.push(routerHistory[routerHistory.length - 1] || '/'); - } - + dispatch('REDIRECT_AFTER_LOGIN'); dispatch('GET_USER_LEVEL_PROJECTS'); dispatch('GET_USER_LEVEL_PERMISSIONS'); return response.status; @@ -165,6 +152,23 @@ export default new Vuex.Store({ } }, + REDIRECT_AFTER_LOGIN() { + // * use stored previous route to go back after login if page not open on login at first + let routerHistory = ''; + if (router.options.routerHistory[0] !== undefined) { + routerHistory = router.options.routerHistory[0].name !== 'login' ? router.options.routerHistory : '/'; + } else { + routerHistory = '/'; + } + + const slug = router.history.current.params.slug; + if (slug) { + router.push({ name: 'project_detail', params: { slug } }); + } else { //* not working at page load, routerHistory filled afterwards, could try history.back() + router.push(routerHistory[routerHistory.length - 1] || '/'); + } + }, + USER_INFO({ state, commit }) { if (!state.user) { axios @@ -178,7 +182,15 @@ export default new Vuex.Store({ .catch(() => { //* if an url to redirect to an external authentification system is present, do not redirect to the login page if (!state.configuration.VUE_APP_LOGIN_URL) { - router.push({ name: 'login' }); + const url = window.location.href; + console.log({ url }); + console.log(url.includes('projet-partage')); + if (url.includes('projet-partage')) { + const slug = url.split('projet-partage/')[1]; + router.push({ name: 'login', params: { slug } }); + } else { + router.push({ name: 'login' }); + } } }); } diff --git a/src/views/registration/Login.vue b/src/views/registration/Login.vue index 77999234..1d1e7b2e 100644 --- a/src/views/registration/Login.vue +++ b/src/views/registration/Login.vue @@ -103,9 +103,9 @@ export default { if (this.$store.state.user) { this.$store.commit( 'DISPLAY_MESSAGE', - { comment: "Vous êtes déjà connecté, vous allez être redirigé vers la page d'accueil." } + { comment: 'Vous êtes déjà connecté, vous allez être redirigé vers la page précédente.' } ); - setTimeout(() => this.$router.push('/'), 3100); + setTimeout(() => this.$store.dispatch('REDIRECT_AFTER_LOGIN'), 3100); } }, methods: { -- GitLab