NobGit
public nobgit read

NobMail

Based on mailcow: dockerized

Languages

Repository composition by tracked source files.

PHP
PHP 49% JavaScript 35% HTML 9% CSS 4% Shell 2% Python 1% Lua 0% Perl 0% Ruby 0% SCSS 0%
Create file Wiki Documentation
Clone
https://nobgit.com/orgs/nobgit/nobmail.git
ssh://[email protected]:2222/orgs/nobgit/nobmail.git

Commit

[Web] Fix JSON parsing issue for api requests

aac0a900
FreddleSpl0it <[email protected]> 1 year, 4 months ago
data/web/js/build/011-api.js | 18 +++++++++++-------
 1 file changed, 11 insertions(+), 7 deletions(-)

Diff

diff --git a/data/web/js/build/011-api.js b/data/web/js/build/011-api.js
index c657c134..1fe595c6 100644
--- a/data/web/js/build/011-api.js
+++ b/data/web/js/build/011-api.js
@@ -158,9 +158,11 @@ $(document).ready(function() {
         var attr_to_merge = $(this).closest("form").serializeObject();
         // parse possible JSON Strings
         for (var [key, value] of Object.entries(attr_to_merge)) {
-          try {
-            attr_to_merge[key] = JSON.parse(attr_to_merge[key]);
-          } catch {}
+          if (typeof value === "string" && /^[\[\{"].*[\}\]"]$/.test(value.trim())) {
+            try {
+              attr_to_merge[key] = JSON.parse(attr_to_merge[key]);
+            } catch {}
+          }
         }
         var api_attr = $.extend(api_attr, attr_to_merge)
       } else {
@@ -271,9 +273,11 @@ $(document).ready(function() {
         var attr_to_merge = $(this).closest("form").serializeObject();
         // parse possible JSON Strings
         for (var [key, value] of Object.entries(attr_to_merge)) {
-          try {
-            attr_to_merge[key] = JSON.parse(attr_to_merge[key]);
-          } catch {}
+          if (typeof value === "string" && /^[\[\{"].*[\}\]"]$/.test(value.trim())) {
+            try {
+              attr_to_merge[key] = JSON.parse(attr_to_merge[key]);
+            } catch {}
+          }
         }
         var api_attr = $.extend(api_attr, attr_to_merge)
       } else {
@@ -312,7 +316,7 @@ $(document).ready(function() {
                 var key = localStorage.key(i);
                 if(/formcache/.test(key)) {
                   localStorage.removeItem(key);
-                }  
+                }
               }
             }
           }