diff --git a/src/App.vue b/src/App.vue index a7d37ca69e4b06019a061347000e99e38f6b2650..af09408b2e3ebd0d516dbe4a0b23bd1836698e8d 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 c06634cca67454fca4fc7d97ac608ab078ee22f6..0efb50511d8f147b0c7f816a2a07fc8e589595ed 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 61e144f89a68b57f46cf72e27e8305a315e4efaa..a07d84208e8459b9466ed6ed758183399a48a763 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 9922d7ece8a99467f68135939977f5a6219ac789..4e88ca6367b4a5ada50ab7069aaf68c687968e35 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/`,