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

JSON API Consume json in request body.

Draft docs https://feldhostmailhosting.docs.apiary.io Signed-off-by: Kristián Feldsam <[email protected]>

be2877c8
Kristián Feldsam <[email protected]> 7 years ago
data/web/json_api.php | 36 ++++++++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)

Diff

diff --git a/data/web/json_api.php b/data/web/json_api.php
index 53ecf520..8e6407b7 100644
--- a/data/web/json_api.php
+++ b/data/web/json_api.php
@@ -64,6 +64,42 @@ if (isset($_SESSION['mailcow_cc_role']) || isset($_SESSION['pending_mailcow_cc_u
     $object =     (isset($query[2])) ? $query[2] : null;
     $extra =      (isset($query[3])) ? $query[3] : null;
 
+    // accept json in request body
+    if($_SERVER['HTTP_CONTENT_TYPE'] === 'application/json') {
+      $request = file_get_contents('php://input');
+      $requestDecoded = json_decode($request, true);
+
+      // check for valid json
+      if($action != 'get' && $requestDecoded === null) {
+        echo json_encode(array(
+            'type' => 'error',
+            'msg' => 'Request body doesn\'t contain valid json!'
+        ));
+        exit;
+      }
+
+      // add
+      if($action == 'add') {
+        $_POST['attr'] = $request;
+      }
+
+      // edit
+      if($action == 'edit') {
+        $_POST['attr']  = json_encode($requestDecoded['attr']);
+        $_POST['items'] = json_encode($requestDecoded['items']);
+      }
+
+      // delete
+      if($action == 'delete') {
+        $_POST['items'] = $request;
+      }
+
+      unset($_SESSION['return']);
+      unset($_SESSION['success']);
+      unset($_SESSION['danger']);
+      unset($_SESSION['error']);
+    }
+
     $request_incomplete = json_encode(array(
     'type' => 'error',
     'msg' => 'Cannot find attributes in post data'