Skip to content
Snippets Groups Projects
Commit 8ad92bdc authored by Timothee P's avatar Timothee P :sunflower:
Browse files

allow super contrib & moderator to modify published status & forbid them to delete others features

parent 5cceed20
No related branches found
No related tags found
No related merge requests found
......@@ -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;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment