diff --git a/server/api-service/.gitignore b/server/api-service/.gitignore index 07c69970f..044c6298e 100644 --- a/server/api-service/.gitignore +++ b/server/api-service/.gitignore @@ -35,3 +35,4 @@ package-lock.json coverage-summary.json app/client/cypress/locators/Widgets.json /openblocks-domain/logs/ +application-lowcoder.yml \ No newline at end of file diff --git a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/ApplicationApiService.java b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/ApplicationApiService.java index 51440c317..43359e65f 100644 --- a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/ApplicationApiService.java +++ b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/ApplicationApiService.java @@ -15,10 +15,7 @@ import static org.lowcoder.sdk.util.ExceptionUtils.ofError; import java.time.Instant; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; import java.util.stream.Collectors; import javax.annotation.Nonnull; @@ -366,8 +363,8 @@ public Mono publish(String applicationId) { } public Mono grantPermission(String applicationId, - Set userIds, - Set groupIds, ResourceRole role) { + Set userIds, + Set groupIds, ResourceRole role) { if (userIds.isEmpty() && groupIds.isEmpty()) { return Mono.just(true); } @@ -502,11 +499,48 @@ private Map sanitizeDsl(Map applicationDsl) { if (applicationDsl.get("queries") instanceof List queries) { List> list = queries.stream().map(this::doSanitizeQuery).toList(); applicationDsl.put("queries", list); + removeTestVariablesFromProductionView(applicationDsl); return applicationDsl; } + removeTestVariablesFromProductionView(applicationDsl); return applicationDsl; } + private void removeTestVariablesFromProductionView(Map applicationDsl) { + /**Remove "test" object if it exists within "applicationDSL**/ + if (applicationDsl.containsKey("ui")) { + Map dataObject = (Map) applicationDsl.get("ui"); + if (dataObject.containsKey("comp")) { + Map applicationDSL = (Map) dataObject.get("comp"); + doRemoveTestVariablesFromProductionView(applicationDSL); + } + } + } + + private void doRemoveTestVariablesFromProductionView(Map map) { + if (map.containsKey("io")) { + Map io = (Map) map.get("io"); + if (io.containsKey("inputs")) { + List> inputs = (List>) io.get("inputs"); + for (Map inputMap : inputs) { + if (inputMap.containsKey("test")) { + inputMap.remove("test"); + } + } + } + + if (io.containsKey("outputs")) { + List> outputs = (List>) io.get("outputs"); + for (Map inputMap : outputs) { + if (inputMap.containsKey("test")) { + inputMap.remove("test"); + } + } + } + } + } + + @SuppressWarnings("unchecked") private Map doSanitizeQuery(Object query) { if (!(query instanceof Map)) {