fix custom fields

pull/7617/head
Martin Schoeler 8 years ago
parent 87b435c01e
commit c7f45c53db
  1. 58
      packages/rocketchat-lib/server/functions/saveCustomFieldsWithoutValidation.js

@ -1,33 +1,35 @@
RocketChat.saveCustomFieldsWithoutValidation = function(userId, formData) {
if (s.trim(RocketChat.settings.get('Accounts_CustomFields')) !== '') {
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 = formData;
// for fieldName, field of customFieldsMeta
RocketChat.models.Users.setCustomFields(userId, customFields);
if (s.trim(RocketChat.settings.get('Accounts_CustomFields')) === '') {
return;
}
Object.keys(customFields).forEach((fieldName) => {
if (!customFieldsMeta[fieldName].modifyRecordField) {
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 modifyRecordField = customFieldsMeta[fieldName].modifyRecordField;
const update = {};
if (modifyRecordField.array) {
update.$addToSet = {};
update.$addToSet[modifyRecordField.field] = customFields[fieldName];
} else {
update.$set = {};
update.$set[modifyRecordField.field] = customFields[fieldName];
}
const customFields = Object.keys(customFieldsMeta).filter(fieldName => !customFieldsMeta[fieldName].modifyRecordField).
reduce((update, key) => {
update[key] = formData[key];
return update;
}, {});
RocketChat.models.Users.update(userId, update);
});
}
RocketChat.models.Users.setCustomFields(userId, customFields);
const update = Object.keys(customFieldsMeta).
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);
};

Loading…
Cancel
Save