From 8ad92bdcfcaf93632babe86775993fefcbf5759a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timoth=C3=A9e=20Poussard?= <tpoussard@neogeo.fr> Date: Fri, 21 Jan 2022 17:43:16 +0100 Subject: [PATCH] allow super contrib & moderator to modify published status & forbid them to delete others features --- src/components/feature/FeatureListTable.vue | 31 ++++++++------------- 1 file changed, 12 insertions(+), 19 deletions(-) diff --git a/src/components/feature/FeatureListTable.vue b/src/components/feature/FeatureListTable.vue index 53edfe56..e7e996ff 100644 --- a/src/components/feature/FeatureListTable.vue +++ b/src/components/feature/FeatureListTable.vue @@ -343,6 +343,10 @@ export default { ...mapState(['user', 'USER_LEVEL_PROJECTS']), ...mapState('projects', ['project']), + userStatus() { + return this.USER_LEVEL_PROJECTS[this.project.slug]; + }, + checked: { get() { return this.checkedFeatures; @@ -401,35 +405,24 @@ export default { }, canDeleteFeature(feature) { - const userStatus = this.USER_LEVEL_PROJECTS[this.project.slug]; - console.log(this.user.username); - console.log(feature.properties.creator.username); - if (feature.properties.creator.username === this.user.username) { - console.log(userStatus); - console.log(userStatus === 'Super Contributeur'); - } - if ((userStatus === 'Super Contributeur' || userStatus === 'Modérateur') && - feature.properties.creator.username !== this.user.username) { - return false; - } - return feature.properties.creator.username !== this.user.username && - !this.user.is_superuser && - !this.permissions.is_project_administrator; + if (this.userStatus === 'Administrateur projet') return true; //* can delete all + //* others can delete only their own features + return feature.properties.creator.username === this.user.username; + }, canEditFeature(feature) { - const userStatus = this.USER_LEVEL_PROJECTS[this.project.slug]; const permissions = { 'Administrateur projet' : ['draft', 'published', 'archived'], Modérateur : ['pending', 'published'], 'Super Contributeur' : ['draft', 'pending', 'published'], - Contributeur : ['draft', this.project.moderation ? 'pending' : 'published'], + Contributeur : ['draft', 'pending', 'published'], }; - if (userStatus === 'Contributeur' && feature.properties.creator.username !== this.user.username) { + if (this.userStatus === 'Contributeur' && feature.properties.creator.username !== this.user.username) { return false; - } else if (permissions[userStatus]) { - return permissions[userStatus].includes(feature.properties.status.value); + } else if (permissions[this.userStatus]) { + return permissions[this.userStatus].includes(feature.properties.status.value); } else { return false; } -- GitLab