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'