From 01079d85cb93eccd31a56e370fe6c219ea5534ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timoth=C3=A9e=20Poussard?= <tpoussard@neogeo.fr> Date: Fri, 28 Jan 2022 15:04:43 +0100 Subject: [PATCH] restrict projects in my account only to shared project --- src/App.vue | 6 ++--- src/router/index.js | 2 +- src/views/My_account.vue | 49 +++++++++++++++++++++++++++++----------- 3 files changed, 40 insertions(+), 17 deletions(-) diff --git a/src/App.vue b/src/App.vue index 9aecfde0..95966e80 100644 --- a/src/App.vue +++ b/src/App.vue @@ -92,7 +92,7 @@ <div class="mobile"> <router-link v-if="user" - to="/my_account/" + :to="{name: 'my_account', params: { slug: $route.params.slug ? $route.params.slug : '-' }}" class="item" > {{ userFullname || user.username || "Utilisateur inconnu" }} @@ -145,8 +145,8 @@ <div class="desktop flex push-right-desktop"> <router-link v-if="user" - :to="{name: isSharedProject ? '' : 'my_account'}" - :class="['item', {disable: isSharedProject}]" + :to="{name: 'my_account', params: { slug: $route.params.slug ? $route.params.slug : '-' }}" + class="item" > {{ userFullname || user.username || "Utilisateur inconnu" }} </router-link> diff --git a/src/router/index.js b/src/router/index.js index 3a60b4cb..7126661b 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -24,7 +24,7 @@ const routes = [ component: () => import(/* webpackChunkName: "login" */'../views/registration/Login.vue') }, { - path: `${projectBase === 'projet' ? '': '/' + projectBase}/my_account/`, + path: `${projectBase === 'projet' ? '': '/' + projectBase + '/:slug'}/my_account/`, name: 'my_account', component: () => import('../views/My_account.vue') }, diff --git a/src/views/My_account.vue b/src/views/My_account.vue index 02e07ea6..7d3f2917 100644 --- a/src/views/My_account.vue +++ b/src/views/My_account.vue @@ -60,7 +60,7 @@ <div class="ui divided items"> <div - v-for="project in projects" + v-for="project in availableProjects" :key="project.slug" class="item" > @@ -156,25 +156,27 @@ <div v-if="item.event_type === 'create'"> <a v-if="item.object_type === 'feature'" - :href="item.related_feature.feature_url" + :href="modifyUrl(item.related_feature.feature_url)" > - Signalement créé + <span> + Signalement créé + </span> </a> <a v-else-if="item.object_type === 'comment'" - :href="item.related_feature.feature_url" + :href="modifyUrl(item.related_feature.feature_url)" > Commentaire créé </a> <a v-else-if="item.object_type === 'attachment'" - :href="item.related_feature.feature_url" + :href="modifyUrl(item.related_feature.feature_url)" > Pièce jointe ajoutée </a> <a v-else-if="item.object_type === 'project'" - :href="item.project_url" + :href="modifyUrl(item.project_url)" > Projet créé </a> @@ -183,13 +185,13 @@ <div v-else-if="item.event_type === 'update'"> <a v-if="item.object_type === 'feature'" - :href="item.related_feature.project_url" + :href="modifyUrl(item.related_feature.project_url)" > Signalement mis à jour </a> <a v-else-if="item.object_type === 'project'" - :href="item.project_url" + :href="modifyUrl(item.project_url)" >à Projet mis à jour </a> </div> @@ -232,7 +234,7 @@ <div> <a v-if="item.related_feature" - :href="item.related_feature.feature_url" + :href="modifyUrl(item.related_feature.feature_url)" >{{ item.related_feature.title }}</a> <span v-else> {{ item.data.feature_title }} (supprimé) @@ -269,7 +271,7 @@ <div class="content"> <div> <a - :href="item.related_feature.feature_url" + :href="modifyUrl(item.related_feature.feature_url)" >"{{ item.related_comment.comment }}"</a> </div> <div class="description"> @@ -314,24 +316,36 @@ export default { }, computed: { - // todo : filter projects to user ...mapState([ 'user', 'USER_LEVEL_PROJECTS', 'user_permissions', ]), + + // todo : filter projects to user ...mapState('projects', [ 'projects' ]), - DJANGO_BASE_URL: function () { + + DJANGO_BASE_URL() { return this.$store.state.configuration.VUE_APP_DJANGO_BASE; }, - userFullname: function () { + + userFullname() { if (this.user.first_name || this.user.last_name) return this.user.first_name + ' ' + this.user.last_name; return null; }, + + availableProjects() { + console.log(this.$route.path); + if (this.$route.path.includes('projet-partage')) { + return this.projects.filter((el) => el.slug === this.$route.params.slug); + } + return this.projects; + } }, + created(){ this.getEvents(); }, @@ -340,17 +354,26 @@ export default { refreshId() { return '?ver=' + Math.random(); }, + setEvents(data){ this.events = data.events; this.features = data.features; this.comments = data.comments; }, + getEvents(){ this.$store .dispatch('USER_EVENTS') .then((data)=>{ this.setEvents(data); }); + }, + + modifyUrl(url) { + if (this.$route.path.includes('projet-partage')) { + return url.replace('projet', 'projet-partage'); + } + return url; } } }; -- GitLab