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); }
