From bf58256bef3bf2e72aa671f6a218514d6c424cfe Mon Sep 17 00:00:00 2001 From: florent <flavelle@neogeo.fr> Date: Tue, 2 Aug 2022 12:21:35 +0200 Subject: [PATCH] some fixes on permissions --- src/components/Feature/Detail/FeatureHeader.vue | 6 +++++- .../FeaturesListAndMap/FeatureListTable.vue | 4 +++- src/views/Feature/FeatureDetail.vue | 17 ++++++++++++++++- 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/src/components/Feature/Detail/FeatureHeader.vue b/src/components/Feature/Detail/FeatureHeader.vue index 7616506c..c90be13b 100644 --- a/src/components/Feature/Detail/FeatureHeader.vue +++ b/src/components/Feature/Detail/FeatureHeader.vue @@ -127,7 +127,7 @@ </router-link> <a - v-if="((permissions && permissions.can_update_feature) || isFeatureCreator) && isOnline" + v-if="canDeleteFeature && isOnline" id="currentFeature-delete" class="ui button button-hover-red tiny-margin" data-tooltip="Supprimer le signalement" @@ -200,6 +200,10 @@ export default { type: Boolean, default: false, }, + canDeleteFeature: { + type: Boolean, + default: false, + }, }, computed: { diff --git a/src/components/Project/FeaturesListAndMap/FeatureListTable.vue b/src/components/Project/FeaturesListAndMap/FeatureListTable.vue index fff79a99..775c08b1 100644 --- a/src/components/Project/FeaturesListAndMap/FeatureListTable.vue +++ b/src/components/Project/FeaturesListAndMap/FeatureListTable.vue @@ -465,7 +465,9 @@ export default { Contributeur : ['draft', 'pending', 'published'], }; - if (this.userStatus === 'Contributeur' && feature.display_creator !== this.user.username) { + if (this.user.is_superuser) { + return true; + } else if (this.userStatus === 'Contributeur' && feature.display_creator !== `${this.user.first_name} ${this.user.last_name}`) { return false; } else if (permissions[this.userStatus]) { return permissions[this.userStatus].includes(feature.status); diff --git a/src/views/Feature/FeatureDetail.vue b/src/views/Feature/FeatureDetail.vue index aead61e1..196ac2ae 100644 --- a/src/views/Feature/FeatureDetail.vue +++ b/src/views/Feature/FeatureDetail.vue @@ -15,6 +15,7 @@ :display-to-list-button="displayToListButton" :is-feature-creator="isFeatureCreator" :can-edit-feature="canEditFeature" + :can-delete-feature="canDeleteFeature" @setIsDeleting="isDeleting = true" @tofeature="pushNgo" /> @@ -242,6 +243,7 @@ export default { computed: { ...mapState([ 'USER_LEVEL_PROJECTS', + 'user' ]), ...mapState('projects', [ 'project' @@ -282,10 +284,23 @@ export default { return this.USER_LEVEL_PROJECTS && this.USER_LEVEL_PROJECTS[this.$route.params.slug] === 'Modérateur'; }, + isAdministrator() { + return this.USER_LEVEL_PROJECTS && this.USER_LEVEL_PROJECTS[this.$route.params.slug] === 'Administrateur projet'; + }, + canEditFeature() { return (this.permissions && this.permissions.can_update_feature) || this.isFeatureCreator || - this.isModerator; + this.isModerator || + this.user.is_superuser; + }, + + canDeleteFeature() { + return (this.permissions && this.permissions.can_delete_feature && this.isFeatureCreator) || + this.isFeatureCreator || + this.isModerator || + this.isAdministrator || + this.user.is_superuser; } }, -- GitLab