From 412dbe0d375a3dcce2758858af30e57a6423f675 Mon Sep 17 00:00:00 2001
From: Jan-Hendrik Willms <tleilax+studip@gmail.com>
Date: Thu, 12 May 2022 06:35:39 +0000
Subject: [PATCH] fix encoding of data passed to STUDIP.jsonapi request
 methods, fixes #984

Closes #984

Merge request studip/studip!566
---
 resources/assets/javascripts/lib/abstract-api.js | 4 ++--
 resources/assets/javascripts/lib/jsonapi.js      | 6 +++++-
 2 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/resources/assets/javascripts/lib/abstract-api.js b/resources/assets/javascripts/lib/abstract-api.js
index 4239118b876..e991d62a386 100644
--- a/resources/assets/javascripts/lib/abstract-api.js
+++ b/resources/assets/javascripts/lib/abstract-api.js
@@ -30,7 +30,7 @@ class AbstractAPI
         this.base_url = base_url;
     }
 
-    encodeData (data) {
+    encodeData (data, method) {
         if (data instanceof Function) {
             data = data();
         }
@@ -76,7 +76,7 @@ class AbstractAPI
             deferred = $.ajax(STUDIP.URLHelper.getURL(`${this.base_url}/${url}`, {}, true), {
                 contentType: options.contentType || 'application/x-www-form-urlencoded; charset=UTF-8',
                 method: options.method.toUpperCase(),
-                data: this.encodeData(options.data),
+                data: this.encodeData(options.data, options.method.toUpperCase()),
                 headers: options.headers
             }).always(() => {
                 // Decrease request counter, remove overlay if neccessary
diff --git a/resources/assets/javascripts/lib/jsonapi.js b/resources/assets/javascripts/lib/jsonapi.js
index bcd954f201c..f3217bc6e6e 100644
--- a/resources/assets/javascripts/lib/jsonapi.js
+++ b/resources/assets/javascripts/lib/jsonapi.js
@@ -7,9 +7,13 @@ class JSONAPI extends AbstractAPI
         super(`jsonapi.php/v${version}`);
     }
 
-    encodeData (data) {
+    encodeData (data, method) {
         data = super.encodeData(data);
 
+        if (['DELETE', 'GET', 'HEAD'].includes(method)) {
+            return data;
+        }
+
         if (Object.keys(data).length === 0) {
             return null;
         }
-- 
GitLab