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/app/api/server/helpers/getUserInfo.js

37 lines
1.2 KiB

import { settings } from '../../../settings/server';
import { getUserPreference, getURL } from '../../../utils/server';
import { API } from '../api';
API.helperMethods.set('getUserInfo', function _getUserInfo(me) {
const isVerifiedEmail = () => {
if (me && me.emails && Array.isArray(me.emails)) {
return me.emails.find((email) => email.verified);
}
return false;
};
const getUserPreferences = () => {
const defaultUserSettingPrefix = 'Accounts_Default_User_Preferences_';
const allDefaultUserSettings = settings.getByRegexp(new RegExp(`^${ defaultUserSettingPrefix }.*$`));
return allDefaultUserSettings.reduce((accumulator, [key]) => {
const settingWithoutPrefix = key.replace(defaultUserSettingPrefix, ' ').trim();
accumulator[settingWithoutPrefix] = getUserPreference(me, settingWithoutPrefix);
return accumulator;
}, {});
};
const verifiedEmail = isVerifiedEmail();
me.email = verifiedEmail ? verifiedEmail.address : undefined;
me.avatarUrl = getURL(`/avatar/${ me.username }`, { cdn: false, full: true });
const userPreferences = (me.settings && me.settings.preferences) || {};
me.settings = {
preferences: {
...getUserPreferences(),
...userPreferences,
},
};
return me;
});