Added query option to limit query fields (#9642)

* Added query option to limit query fields

* Removed only
This commit is contained in:
Keith Holliday
2017-12-11 10:24:19 -06:00
committed by GitHub
parent 1750a0c2e6
commit a7c115877f
3 changed files with 29 additions and 6 deletions

View File

@@ -5,9 +5,22 @@ import {
model as User,
} from '../models/user';
import nconf from 'nconf';
import url from 'url';
const COMMUNITY_MANAGER_EMAIL = nconf.get('EMAILS:COMMUNITY_MANAGER_EMAIL');
function getUserFields (userFieldProjection, req) {
if (userFieldProjection) return `notifications ${userFieldProjection}`;
const urlPath = url.parse(req.url).pathname;
if (!req.query.userFields || urlPath !== '/user') return '';
const userFieldOptions = req.query.userFields.split(',');
if (userFieldOptions.length === 0) return '';
return `notifications ${userFieldOptions.join(' ')}`;
}
// Strins won't be translated here because getUserLanguage has not run yet
// Authenticate a request through the x-api-user and x-api key header
@@ -27,8 +40,7 @@ export function authWithHeaders (optional = false, userFieldProjection = '') {
apiToken,
};
let fields = '';
if (userFieldProjection) fields = `notifications ${userFieldProjection}`;
const fields = getUserFields(userFieldProjection, req);
const findPromise = fields ? User.findOne(userQuery, fields) : User.findOne(userQuery);
return findPromise