mirror of
https://github.com/node-red/node-red.git
synced 2025-03-01 10:36:34 +00:00
Restructure how editor/git settings are saved in userSettings
This commit is contained in:
@@ -68,7 +68,9 @@ module.exports = {
|
||||
} else {
|
||||
username = req.user.username;
|
||||
}
|
||||
settings.setUserSettings(username, req.body).then(function() {
|
||||
var currentSettings = settings.getUserSettings(username)||{};
|
||||
currentSettings = extend(currentSettings, req.body);
|
||||
settings.setUserSettings(username, currentSettings).then(function() {
|
||||
log.audit({event: "settings.update",username:username},req);
|
||||
res.status(204).end();
|
||||
}).otherwise(function(err) {
|
||||
@@ -77,3 +79,27 @@ module.exports = {
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function extend(target, source) {
|
||||
var keys = Object.keys(source);
|
||||
var i = keys.length;
|
||||
while(i--) {
|
||||
var value = source[keys[i]]
|
||||
var type = typeof value;
|
||||
if (type === 'string' || type === 'number' || type === 'boolean' || Array.isArray(value)) {
|
||||
target[keys[i]] = value;
|
||||
} else if (value === null) {
|
||||
if (target.hasOwnProperty(keys[i])) {
|
||||
delete target[keys[i]];
|
||||
}
|
||||
} else {
|
||||
// Object
|
||||
if (target.hasOwnProperty(keys[i])) {
|
||||
target[keys[i]] = extend(target[keys[i]],value);
|
||||
} else {
|
||||
target[keys[i]] = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
return target;
|
||||
}
|
||||
|
@@ -165,17 +165,18 @@ var persistentSettings = {
|
||||
});
|
||||
},
|
||||
getUserSettings: function(username) {
|
||||
console.log(username);
|
||||
return userSettings[username];
|
||||
return clone(userSettings[username]);
|
||||
},
|
||||
setUserSettings: function(username,settings) {
|
||||
var current = userSettings[username];
|
||||
userSettings[username] = settings;
|
||||
try {
|
||||
assert.deepEqual(current,settings);
|
||||
console.log("skip the save");
|
||||
return when.resolve();
|
||||
} catch(err) {
|
||||
globalSettings.users = userSettings;
|
||||
console.log("saving");
|
||||
return storage.saveSettings(globalSettings);
|
||||
}
|
||||
}
|
||||
|
@@ -53,7 +53,6 @@ Project.prototype.load = function () {
|
||||
this.credentialSecret = projectSettings.credentialSecret;
|
||||
this.git = projectSettings.git || { user:{} };
|
||||
|
||||
console.log("LOADED",this.git);
|
||||
// this.paths.flowFile = fspath.join(this.path,"flow.json");
|
||||
// this.paths.credentialsFile = fspath.join(this.path,"flow_cred.json");
|
||||
|
||||
|
Reference in New Issue
Block a user