From 29c696ba146ca44a6cb3d262633753d464a5151b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Timoth=C3=A9e=20Poussard?= <tpoussard@neogeo.fr>
Date: Tue, 16 Nov 2021 17:31:27 +0100
Subject: [PATCH] allow moderator to edit features & update feature data after
 edition

---
 src/store/modules/feature.js         |  1 +
 src/views/feature/Feature_detail.vue | 29 +++++++++++++++++++++-------
 2 files changed, 23 insertions(+), 7 deletions(-)

diff --git a/src/store/modules/feature.js b/src/store/modules/feature.js
index ecf1c647..bdcd6dab 100644
--- a/src/store/modules/feature.js
+++ b/src/store/modules/feature.js
@@ -120,6 +120,7 @@ const feature = {
       const message = routeName === "editer-signalement" ? "Le signalement a été mis à jour" : "Le signalement a été crée";
 
       function redirect(featureId) {
+        dispatch("GET_PROJECT_FEATURES", rootState.project_slug)
         commit("DISCARD_LOADER", null, { root: true })
         router.push({
           name: "details-signalement",
diff --git a/src/views/feature/Feature_detail.vue b/src/views/feature/Feature_detail.vue
index b31ae747..45d445be 100644
--- a/src/views/feature/Feature_detail.vue
+++ b/src/views/feature/Feature_detail.vue
@@ -24,7 +24,8 @@
                 <router-link
                   v-if="
                     (permissions && permissions.can_update_feature) ||
-                    isFeatureCreator
+                    isFeatureCreator ||
+                    isModerator
                   "
                   :to="{
                     name: 'editer-signalement',
@@ -39,7 +40,9 @@
                 </router-link>
                 <!-- (permissions && permissions.can_delete_feature) || -->
                 <a
-                  v-if="isFeatureCreator || permissions.is_project_super_contributor"
+                  v-if="
+                    isFeatureCreator || permissions.is_project_super_contributor
+                  "
                   @click="isCanceling = true"
                   id="feature-delete"
                   class="ui button button-hover-red"
@@ -386,14 +389,14 @@ export default {
   },
 
   computed: {
-    ...mapState(["user"]),
-    ...mapGetters(["permissions"]),
+    ...mapState(["user", "USER_LEVEL_PROJECTS"]),
+    ...mapGetters(["permissions", "project"]),
     ...mapState("feature", ["linked_features", "statusChoices"]),
-    DJANGO_BASE_URL: function () {
+    DJANGO_BASE_URL() {
       return this.$store.state.configuration.VUE_APP_DJANGO_BASE;
     },
 
-    feature: function () {
+    feature() {
       const result = this.$store.state.feature.features.find(
         (el) => el.feature_id === this.$route.params.slug_signal
       );
@@ -407,6 +410,13 @@ export default {
       return false;
     },
 
+    isModerator() {
+      return this.USER_LEVEL_PROJECTS &&
+        this.USER_LEVEL_PROJECTS[this.project.slug] === "Modérateur"
+        ? true
+        : false;
+    },
+
     statusIcon() {
       switch (this.feature.status) {
         case "archived":
@@ -617,7 +627,12 @@ export default {
           const feature = response.data;
           if (feature) {
             const currentFeature = [feature];
-            const featureGroup = mapUtil.addFeatures(currentFeature,{},true,this.$store.state.feature_type.feature_types);
+            const featureGroup = mapUtil.addFeatures(
+              currentFeature,
+              {},
+              true,
+              this.$store.state.feature_type.feature_types
+            );
             mapUtil
               .getMap()
               .fitBounds(featureGroup.getBounds(), { padding: [25, 25] });
-- 
GitLab