diff --git a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/controller/ItemController.java b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/controller/ItemController.java index afc15d89cff..e0c985b1035 100644 --- a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/controller/ItemController.java +++ b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/controller/ItemController.java @@ -195,7 +195,7 @@ public List diff(@RequestBody NamespaceSyncModel model) { @PutMapping(value = "/apps/{appId}/namespaces/{namespaceName}/items", consumes = {"application/json"}) public ResponseEntity update(@PathVariable String appId, @PathVariable String namespaceName, @RequestBody NamespaceSyncModel model) { - checkModel(!model.isInvalid()); + checkModel(!model.isInvalid() && model.syncToNamespacesValid(appId, namespaceName)); boolean hasPermission = permissionValidator.hasModifyNamespacePermission(appId, namespaceName); Env envNoPermission = null; // if uses has ModifyNamespace permission then he has permission diff --git a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/entity/model/NamespaceSyncModel.java b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/entity/model/NamespaceSyncModel.java index 85edd139feb..bac12fe818d 100644 --- a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/entity/model/NamespaceSyncModel.java +++ b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/entity/model/NamespaceSyncModel.java @@ -41,6 +41,17 @@ public boolean isInvalid() { return false; } + public boolean syncToNamespacesValid(String appId, String namespaceName) { + for (NamespaceIdentifier namespaceIdentifier : syncToNamespaces) { + if (appId.equals(namespaceIdentifier.getAppId()) && namespaceName.equals( + namespaceIdentifier.getNamespaceName())) { + continue; + } + return false; + } + return true; + } + public List getSyncToNamespaces() { return syncToNamespaces; }