From 5d99b8448ef863f9b539838b3936b2d3aaf26f4a Mon Sep 17 00:00:00 2001
From: leandro <leandroalmada86@gmail.com>
Date: Thu, 23 Sep 2021 17:47:57 +0200
Subject: [PATCH] add axios default X CSRFToken

---
 src/assets/js/map-util.js          | 7 +++++++
 src/services/project-api.js        | 8 ++++++++
 src/store/index.js                 | 6 ++++++
 src/store/modules/feature.js       | 6 ++++++
 src/store/modules/feature_type.js  | 5 +++++
 src/store/modules/map.js           | 6 ++++++
 src/views/feature/Feature_edit.vue | 7 +++++++
 src/views/project/Project_edit.vue | 7 +++++++
 8 files changed, 52 insertions(+)

diff --git a/src/assets/js/map-util.js b/src/assets/js/map-util.js
index 7b9c606c..2bb0f78e 100644
--- a/src/assets/js/map-util.js
+++ b/src/assets/js/map-util.js
@@ -3,6 +3,13 @@ import "leaflet/dist/leaflet.css";
 import flip from '@turf/flip'
 import axios from "axios"
 
+axios.defaults.headers.common['X-CSRFToken'] = (name => {
+  var re = new RegExp(name + "=([^;]+)");
+  var value = re.exec(document.cookie);
+  return (value != null) ? unescape(value[1]) : null;
+})('csrftoken');
+
+
 let map;
 let dictLayersToLeaflet = {};
 
diff --git a/src/services/project-api.js b/src/services/project-api.js
index 14019cb1..fd46c392 100644
--- a/src/services/project-api.js
+++ b/src/services/project-api.js
@@ -1,6 +1,14 @@
 import axios from 'axios';
 import store from '../store'
 
+
+axios.defaults.headers.common['X-CSRFToken'] = (name => {
+  var re = new RegExp(name + "=([^;]+)");
+  var value = re.exec(document.cookie);
+  return (value != null) ? unescape(value[1]) : null;
+})('csrftoken');
+
+
 const baseUrl = store.state.configuration.VUE_APP_DJANGO_API_BASE;
 
 const projectAPI = {
diff --git a/src/store/index.js b/src/store/index.js
index ce5d58e6..cb00de20 100644
--- a/src/store/index.js
+++ b/src/store/index.js
@@ -8,6 +8,12 @@ import feature_type from "./modules/feature_type"
 import feature from "./modules/feature"
 import map from "./modules/map"
 
+axios.defaults.headers.common['X-CSRFToken'] = (name => {
+  var re = new RegExp(name + "=([^;]+)");
+  var value = re.exec(document.cookie);
+  return (value != null) ? unescape(value[1]) : null;
+})('csrftoken');
+
 
 Vue.use(Vuex);
 
diff --git a/src/store/modules/feature.js b/src/store/modules/feature.js
index fd9ee283..f6f7f42e 100644
--- a/src/store/modules/feature.js
+++ b/src/store/modules/feature.js
@@ -1,6 +1,12 @@
 const axios = require("axios");
 import router from '../../router'
 
+axios.defaults.headers.common['X-CSRFToken'] = (name => {
+  var re = new RegExp(name + "=([^;]+)");
+  var value = re.exec(document.cookie);
+  return (value != null) ? unescape(value[1]) : null;
+})('csrftoken');
+
 
 const feature = {
   namespaced: true,
diff --git a/src/store/modules/feature_type.js b/src/store/modules/feature_type.js
index e8986cb1..f4148c17 100644
--- a/src/store/modules/feature_type.js
+++ b/src/store/modules/feature_type.js
@@ -1,5 +1,10 @@
 import axios from "axios"
 
+axios.defaults.headers.common['X-CSRFToken'] = (name => {
+  var re = new RegExp(name + "=([^;]+)");
+  var value = re.exec(document.cookie);
+  return (value != null) ? unescape(value[1]) : null;
+})('csrftoken');
 
 
 const feature_type = {
diff --git a/src/store/modules/map.js b/src/store/modules/map.js
index 207d3ebc..f29ef9f4 100644
--- a/src/store/modules/map.js
+++ b/src/store/modules/map.js
@@ -1,6 +1,12 @@
 const axios = require("axios");
 import { mapUtil } from "@/assets/js/map-util.js";
 
+axios.defaults.headers.common['X-CSRFToken'] = (name => {
+  var re = new RegExp(name + "=([^;]+)");
+  var value = re.exec(document.cookie);
+  return (value != null) ? unescape(value[1]) : null;
+})('csrftoken');
+
 
 const map = {
   namespaced: true,
diff --git a/src/views/feature/Feature_edit.vue b/src/views/feature/Feature_edit.vue
index c13fb8bf..2b60ca87 100644
--- a/src/views/feature/Feature_edit.vue
+++ b/src/views/feature/Feature_edit.vue
@@ -240,6 +240,13 @@ import { mapUtil } from "@/assets/js/map-util.js";
 const axios = require("axios");
 import flip from "@turf/flip";
 
+axios.defaults.headers.common['X-CSRFToken'] = (name => {
+    var re = new RegExp(name + "=([^;]+)");
+    var value = re.exec(document.cookie);
+    return (value != null) ? unescape(value[1]) : null;
+  })('csrftoken');
+
+
 export default {
   name: "Feature_edit",
 
diff --git a/src/views/project/Project_edit.vue b/src/views/project/Project_edit.vue
index 980c4466..72a6344c 100644
--- a/src/views/project/Project_edit.vue
+++ b/src/views/project/Project_edit.vue
@@ -172,6 +172,13 @@ import Dropdown from "@/components/Dropdown.vue";
 
 import { mapGetters } from "vuex";
 
+axios.defaults.headers.common['X-CSRFToken'] = (name => {
+    var re = new RegExp(name + "=([^;]+)");
+    var value = re.exec(document.cookie);
+    return (value != null) ? unescape(value[1]) : null;
+  })('csrftoken');
+
+
 export default {
   name: "Project_edit",
 
-- 
GitLab