[FIX] User info APIs not returning customFields correctly (#11625)

pull/11631/head^2
Marcos Spessatto Defendi 7 years ago committed by Diego Sampaio
parent 1a37a7529a
commit 85be5572db
  1. 13
      packages/rocketchat-lib/server/functions/getFullUserData.js

@ -37,9 +37,9 @@ RocketChat.settings.get('Accounts_CustomFields', (key, value) => {
}
try {
const customFields = JSON.parse(value.trim());
Object.keys(customFields).forEach(key => {
const element = customFields[key];
const customFieldsOnServer = JSON.parse(value.trim());
Object.keys(customFieldsOnServer).forEach(key => {
const element = customFieldsOnServer[key];
if (element.public) {
publicCustomFields[`customFields.${ key }`] = 1;
}
@ -48,21 +48,20 @@ RocketChat.settings.get('Accounts_CustomFields', (key, value) => {
} catch (e) {
logger.warn(`The JSON specified for "Accounts_CustomFields" is invalid. The following error was thrown: ${ e }`);
}
});
RocketChat.getFullUserData = function({ userId, filter, limit: l }) {
const username = s.trim(filter);
const userToRetrieveFullUserData = RocketChat.models.Users.findOneByUsername(username);
const isMyOwnInfo = userToRetrieveFullUserData && userToRetrieveFullUserData._id === userId;
const viewFullOtherUserInfo = RocketChat.authz.hasPermission(userId, 'view-full-other-user-info');
const limit = !viewFullOtherUserInfo ? 1 : l;
if (!username && limit <= 1) {
return undefined;
}
const _customFields = viewFullOtherUserInfo ? customFields : publicCustomFields;
const _customFields = isMyOwnInfo || viewFullOtherUserInfo ? customFields : publicCustomFields;
const fields = viewFullOtherUserInfo ? { ...defaultFields, ...fullFields, ..._customFields } : { ...defaultFields, ..._customFields };

Loading…
Cancel
Save