mirror of
https://github.com/node-red/node-red.git
synced 2025-03-01 10:36:34 +00:00
Ensure global-config credential env vars are merged on deploy
Fixes #4508
This commit is contained in:
parent
282bb6c414
commit
58e2fcbeee
@ -71,7 +71,7 @@ RED.envVar = (function() {
|
||||
};
|
||||
if (item.name.trim() !== "") {
|
||||
new_env.push(item);
|
||||
if ((item.type === "cred") && (item.value !== "__PWRD__")) {
|
||||
if (item.type === "cred") {
|
||||
credentials.map[item.name] = item.value;
|
||||
credentials.map["has_"+item.name] = (item.value !== "");
|
||||
item.value = "__PWRD__";
|
||||
|
@ -384,10 +384,27 @@ var api = module.exports = {
|
||||
}
|
||||
}
|
||||
} else if (nodeType === "global-config") {
|
||||
if (JSON.stringify(savedCredentials.map) !== JSON.stringify(newCreds.map)) {
|
||||
savedCredentials.map = newCreds.map;
|
||||
dirty = true;
|
||||
}
|
||||
const existingCredentialKeys = Object.keys(savedCredentials?.map || [])
|
||||
const newCredentialKeys = Object.keys(newCreds?.map || [])
|
||||
existingCredentialKeys.forEach(key => {
|
||||
if (!newCreds.map?.[key]) {
|
||||
// This key doesn't exist in the new credentials list - remove
|
||||
delete savedCredentials.map[key]
|
||||
delete savedCredentials.map[`has_${key}`]
|
||||
dirty = true
|
||||
}
|
||||
})
|
||||
newCredentialKeys.forEach(key => {
|
||||
if (!/^has_/.test(key)) {
|
||||
if (!savedCredentials.map?.[key] || newCreds.map[key] !== '__PWRD__') {
|
||||
// This key either doesn't exist in current saved, or the
|
||||
// value has been changed
|
||||
savedCredentials.map[key] = newCreds.map[key]
|
||||
savedCredentials.map[`has_${key}`] = newCreds.map[`has_${key}`]
|
||||
dirty = true
|
||||
}
|
||||
}
|
||||
})
|
||||
} else {
|
||||
var dashedType = nodeType.replace(/\s+/g, '-');
|
||||
var definition = credentialsDef[dashedType];
|
||||
|
Loading…
x
Reference in New Issue
Block a user