This is an automated email from the ASF dual-hosted git repository.

heneveld pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/brooklyn-ui.git

commit d4650adfc5f7aff7804e0095af672e2e9c5d96ed
Author: Alex Heneveld <[email protected]>
AuthorDate: Wed Sep 15 12:41:29 2021 +0100

    display warning in composer when writing plaintext values
---
 .../providers/blueprint-service.provider.js        | 28 ++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git 
a/ui-modules/blueprint-composer/app/components/providers/blueprint-service.provider.js
 
b/ui-modules/blueprint-composer/app/components/providers/blueprint-service.provider.js
index e2d0aa4..acb9c4a 100644
--- 
a/ui-modules/blueprint-composer/app/components/providers/blueprint-service.provider.js
+++ 
b/ui-modules/blueprint-composer/app/components/providers/blueprint-service.provider.js
@@ -22,6 +22,7 @@ import {Issue, ISSUE_LEVEL} from '../util/model/issue.model';
 import {Dsl} from "../util/model/dsl.model";
 import jsYaml from "js-yaml";
 import typeNotFoundIcon from "../../img/icon-not-found.svg";
+import {isSensitiveFieldName, isSensitiveFieldPlaintextValueBlocked} from 
'brooklyn-ui-utils/sensitive-field/sensitive-field';
 
 const MODULE_NAME = 'brooklyn.composer.service.blueprint-service';
 const TAG = 'SERVICE :: BLUEPRINT :: ';
@@ -427,6 +428,30 @@ function BlueprintService($log, $q, $sce, paletteApi, 
iconGenerator, dslService,
     }
 
     function refreshConfigConstraints(entity) {
+        function checkSensitiveFields(config) {
+            if (isSensitiveFieldPlaintextValueBlocked() && 
isSensitiveFieldName(config.name)) {
+                let v = entity.config.get(config.name);
+                if (!v) return;
+                let t = typeof v;
+                if (t === 'object') return;
+                let invalid = false;
+                if (t === 'string') {
+                    if (t.length) {
+                        if (t.startsWith("$brooklyn:")) {
+                            invalid = false;
+                        } else {
+                            invalid = true;
+                        }
+                    }
+                } else if (t === 'number') {
+                    invalid = true;
+                }
+                if (invalid) {
+                    let message = `Plaintext values are not permitted for 
<samp>${config.name}</samp>. <br/>Use DSL with externalized configuration.`;
+                    
entity.addIssue(Issue.builder().group('config').ref(config.name).message($sce.trustAsHtml(message)).build());
+                }
+            }
+        }
         function checkConstraints(config) {
             for (let constraintO of config.constraints) {
                 let message = null;
@@ -506,6 +531,9 @@ function BlueprintService($log, $q, $sce, paletteApi, 
iconGenerator, dslService,
         return $q((resolve) => {
             if (entity.miscData.has('config')) {
                 entity.miscData.get('config')
+                    .forEach(checkSensitiveFields);
+
+                entity.miscData.get('config')
                     .filter(config => config.constraints && 
config.constraints.length > 0)
                     .forEach(checkConstraints);
             }

Reply via email to