add api endpoints to get user by username and by email

Signed-off-by: Dustin Falgout <dustin@falgout.us>
v1.18.x
Dustin Falgout 9 years ago
parent bc199d6872
commit 0e5830d6f2

@ -195,6 +195,54 @@ apiController.getUserByUID = function(req, res, next) {
};
apiController.getUserByUsername = function (req, res, next) {
var username = req.params.username ? req.params.username : 0;
async.waterfall([
function (next) {
user.getUidByUsername(username, next);
},
async.parallel({
userData: async.apply(user.getUserData, uid),
settings: async.apply(user.getSettings, uid)
}, function (err, results) {
if (err || !results.userData) {
return next(err);
}
results.userData.email = results.settings.showemail ? results.userData.email : undefined;
results.userData.fullname = results.settings.showfullname ? results.userData.fullname : undefined;
res.json(results.userData);
})
], next);
};
apiController.getUserByEmail = function (req, res, next) {
var email = req.params.email ? req.params.email : 0;
async.waterfall([
function (next) {
user.getUidByEmail(email, next);
},
async.parallel({
userData: async.apply(user.getUserData, uid),
settings: async.apply(user.getSettings, uid)
}, function (err, results) {
if (err || !results.userData) {
return next(err);
}
results.userData.email = results.settings.showemail ? results.userData.email : undefined;
results.userData.fullname = results.settings.showfullname ? results.userData.fullname : undefined;
res.json(results.userData);
})
], next);
};
apiController.getModerators = function(req, res, next) {
categories.getModerators(req.params.cid, function(err, moderators) {
if (err) {

@ -13,6 +13,9 @@ module.exports = function(app, middleware, controllers) {
router.get('/widgets/render', controllers.api.renderWidgets);
router.get('/user/uid/:uid', middleware.checkGlobalPrivacySettings, controllers.api.getUserByUID);
router.get('/user/username/:username', middleware.checkGlobalPrivacySettings, controllers.api.getUserByUsername);
router.get('/user/email/:email', middleware.checkGlobalPrivacySettings, controllers.api.getUserByEmail);
router.get('/:type/pid/:id', controllers.api.getObject);
router.get('/:type/tid/:id', controllers.api.getObject);
router.get('/:type/cid/:id', controllers.api.getObject);

Loading…
Cancel
Save