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

modify status edition rights for feature list table

parent 9eb64fbc
No related branches found
No related tags found
2 merge requests!295Version 3.0.0,!284REDMINE_ISSUE-11834
......@@ -412,8 +412,8 @@ export default {
canEditFeature(feature) {
const permissions = {
'Administrateur projet' : ['draft', 'published', 'archived'],
Modérateur : ['pending', 'published'],
'Administrateur projet' : ['draft', 'pending', 'published', 'archived'],
Modérateur : ['draft', 'pending', 'published'],
'Super Contributeur' : ['draft', 'pending', 'published'],
Contributeur : ['draft', 'pending', 'published'],
};
......
......@@ -346,47 +346,26 @@ export default {
if (this.project) {
const isModerate = this.project.moderation;
const userStatus = this.USER_LEVEL_PROJECTS[this.project.slug];
const isOwnFeature = this.feature
? this.feature.creator === this.user.id //* prevent undefined feature
: false; //* si le contributeur est l'auteur du signalement
if (
//* si admin, modérateur ou super contributeur, statuts toujours disponible: Brouillon, Publié, Archivé
userStatus === 'Administrateur projet' ||
(userStatus === 'Super Contributeur' && !isModerate)
) {
return this.statusChoices.filter((el) => el.value !== 'pending');
} else if (userStatus === 'Super Contributeur' && isModerate) {
return this.statusChoices.filter(
(el) => el.value === 'draft' || el.value === 'pending'
);
} else if (userStatus === 'Modérateur') {
return this.statusChoices.filter(
(el) => el.value === 'draft' || el.value === 'published'
);
} else if (userStatus === 'Contributeur') {
//* cas particuliers du contributeur
if (
this.currentRouteName === 'ajouter-signalement' ||
!isOwnFeature
) {
//* même cas à l'ajout d'une feature ou si feature n'a pas été créé par le contributeur
return isModerate
? this.statusChoices.filter(
(el) => el.value === 'draft' || el.value === 'pending'
)
: this.statusChoices.filter(
(el) => el.value === 'draft' || el.value === 'published'
);
} else {
//* à l'édition d'une feature et si le contributeur est l'auteur de la feature
return isModerate
? this.statusChoices.filter(
(el) => el.value !== 'published' //* toutes sauf "Publié"
)
: this.statusChoices.filter(
(el) => el.value !== 'pending' //* toutes sauf "En cours de publication"
);
}
switch (userStatus) {
case 'Administrateur projet' : //* ajout de 'pending' si projet modéré
return isModerate ? this.statusChoices : this.statusChoices.filter((el) => el.value !== 'pending');
case 'Modérateur' :
console.log('Modérateur', isModerate);
return isModerate ?
this.statusChoices.filter((el) => el.value !== 'archived') : //* ajout de 'pending' si projet modéré
this.statusChoices.filter(
(el) => el.value === 'draft' || el.value === 'published'
);
case 'Super Contributeur' :
case 'Contributeur' :
return isModerate ?
this.statusChoices.filter((el) => el.value === 'draft') :
this.statusChoices.filter( //* ajout de 'published' si projet non-modéré
(el) => el.value === 'draft' || el.value === 'published'
);
}
}
return [];
......
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