diff --git a/src/components/Feature/Detail/FeatureHeader.vue b/src/components/Feature/Detail/FeatureHeader.vue index 7616506c650d7e60a8e8d43131ff2d82c587afc6..c90be13bb4d26921745cd2bd46e64797b917edc2 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 fff79a991ecb1479945455bb91747a99b68c5ed4..775c08b1509b448ecf16fc7f3cba1a4f852875bf 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 aead61e150b261da8b65ccff5c5c55301fc300b4..196ac2ae3474cf84656e5994d6af97224e5018cb 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; } },