The communications platform that puts data protection first.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Rocket.Chat/packages/rocketchat-lib/server/functions/saveCustomFieldsWithoutVali...

37 lines
1.2 KiB

RocketChat.saveCustomFieldsWithoutValidation = function(userId, formData) {
if (s.trim(RocketChat.settings.get('Accounts_CustomFields')) === '') {
return;
}
let customFieldsMeta;
try {
customFieldsMeta = JSON.parse(RocketChat.settings.get('Accounts_CustomFields'));
} catch (e) {
throw new Meteor.Error('error-invalid-customfield-json', 'Invalid JSON for Custom Fields');
}
const customFields = Object.keys(customFieldsMeta).filter(fieldName => !customFieldsMeta[fieldName].modifyRecordField).
9 years ago
reduce((update, key) => {
update[key] = formData[key];
return update;
}, {});
RocketChat.models.Users.setCustomFields(userId, customFields);
const update = Object.keys(customFieldsMeta).
9 years ago
filter(fieldName => customFieldsMeta[fieldName].modifyRecordField).
reduce((update, fieldName) => {
const modifyRecordField = customFieldsMeta[fieldName].modifyRecordField;
if (modifyRecordField.array) {
update.$addToSet[modifyRecordField.field] = formData[fieldName];
} else {
update.$set[modifyRecordField.field] = formData[fieldName];
}
return update;
}, {
$addToSet: {},
$set: {}
});
RocketChat.models.Users.update(userId, update);
};