From 088a1a8f337fe0c89379b12abb7e42c5efccbe8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timoth=C3=A9e=20Poussard?= <tpoussard@neogeo.fr> Date: Mon, 27 Sep 2021 11:58:12 +0200 Subject: [PATCH] fix missing permissions in menu --- src/App.vue | 14 +++++++---- src/store/index.js | 34 +++++++++++++++------------ src/views/project/Project_detail.vue | 8 ++++--- src/views/project/Project_members.vue | 2 +- 4 files changed, 35 insertions(+), 23 deletions(-) diff --git a/src/App.vue b/src/App.vue index a7d37ca6..af09408b 100644 --- a/src/App.vue +++ b/src/App.vue @@ -8,7 +8,7 @@ class="ui mini right spaced image" src="@/assets/img/logo-neogeo-circle.png" /> - <!-- :src="LOGO_PATH" --> + <!-- :src="LOGO_PATH" --> {{ getApplicationName() }} </router-link> @@ -44,6 +44,7 @@ </router-link> <router-link + v-if="user.is_administrator" :to="{ name: 'project_mapping', params: { slug: project.slug }, @@ -53,6 +54,7 @@ <i class="map icon"></i>Fonds cartographiques </router-link> <router-link + v-if="user.is_administrator" :to="{ name: 'project_members', params: { slug: project.slug }, @@ -61,7 +63,6 @@ > <i class="users icon"></i>Membres </router-link> - <!-- {% endif %} --> </div> </div> @@ -128,7 +129,6 @@ </template> <script> - import frag from "vue-frag"; import { mapState } from "vuex"; import { mapGetters } from "vuex"; @@ -148,7 +148,13 @@ export default { }, computed: { - ...mapState(["projects", "user", "SSO_SETTED", "USER_LEVEL_PROJECTS","configuration"]), + ...mapState([ + "projects", + "user", + "SSO_SETTED", + "USER_LEVEL_PROJECTS", + "configuration", + ]), ...mapGetters(["project"]), //LOGO_PATH: () => require(`${configuration.VUE_APP_LOGO_PATH}`), //APPLICATION_NAME: () => this.configuration.VUE_APP_APPLICATION_NAME, diff --git a/src/store/index.js b/src/store/index.js index c06634cc..0efb5051 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -162,19 +162,21 @@ export default new Vuex.Store({ } }, - USER_INFO({ commit }) { - axios - .get(`${this.state.configuration.VUE_APP_DJANGO_API_BASE}user_info/`) - .then((response) => { - if (response && response.status === 200) { - const user = response.data.user; - commit("SET_USER", user); - window.localStorage.setItem("user", JSON.stringify(user)); //? toujours nécessaire ? - } - }) - .catch(() => { - router.push({ name: "login" }); - }); + USER_INFO({ state, commit }) { + if (state.user) { + axios + .get(`${this.state.configuration.VUE_APP_DJANGO_API_BASE}user_info/`) + .then((response) => { + if (response && response.status === 200) { + const user = response.data.user; + commit("SET_USER", user); + window.localStorage.setItem("user", JSON.stringify(user)); //? toujours nécessaire ? + } + }) + .catch(() => { + router.push({ name: "login" }); + }); + } }, LOGOUT({ commit }) { // ? logout se fait bien dans django ? @@ -185,6 +187,7 @@ export default new Vuex.Store({ commit("SET_USER", false); // ? better false or null commit("SET_USER_LEVEL_PROJECTS", null); commit("SET_USER_PERMISSIONS", null); + router.push("/"); } }) .catch((error) => { @@ -204,6 +207,7 @@ export default new Vuex.Store({ throw error; }); }, + GET_USER_LEVEL_PROJECTS({ commit }) { axios .get(`${this.state.configuration.VUE_APP_DJANGO_API_BASE}user-level-projects/`) @@ -230,12 +234,12 @@ export default new Vuex.Store({ }); }, - GET_PROJECT_INFO({ commit, dispatch }, slug) { + GET_PROJECT_INFO({ state, commit, dispatch }, slug) { commit("SET_PROJECT_SLUG", slug); dispatch("GET_PROJECT_LAST_MESSAGES", slug); dispatch("feature_type/GET_PROJECT_FEATURE_TYPES", slug); dispatch("feature/GET_PROJECT_FEATURES", slug); - dispatch("map/GET_BASEMAPS", slug); + if (state.user) dispatch("map/GET_BASEMAPS", slug); }, GET_PROJECT_LAST_MESSAGES({ commit }, project_slug) { diff --git a/src/views/project/Project_detail.vue b/src/views/project/Project_detail.vue index 61e144f8..a07d8420 100644 --- a/src/views/project/Project_detail.vue +++ b/src/views/project/Project_detail.vue @@ -522,9 +522,11 @@ export default { }, created() { this.$store.dispatch("GET_PROJECT_INFO", this.slug); - projectAPI - .getProjectSubscription({ projectSlug: this.$route.params.slug }) - .then((data) => (this.is_suscriber = data.is_suscriber)); + if (this.user) { + projectAPI + .getProjectSubscription({ projectSlug: this.$route.params.slug }) + .then((data) => (this.is_suscriber = data.is_suscriber)); + } }, mounted() { diff --git a/src/views/project/Project_members.vue b/src/views/project/Project_members.vue index 9922d7ec..4e88ca63 100644 --- a/src/views/project/Project_members.vue +++ b/src/views/project/Project_members.vue @@ -93,7 +93,7 @@ export default { }, }; }); - + axios .put( `${this.$store.state.configuration.VUE_APP_DJANGO_API_BASE}projects/${this.project.slug}/utilisateurs/`, -- GitLab