Added a route for getting user names by id.

This commit is contained in:
Scott Erickson 2014-02-17 15:19:19 -08:00
parent 82f0860b40
commit 52a6cdf09c
2 changed files with 32 additions and 7 deletions

View file

@ -261,11 +261,12 @@ module.exports = class Handler
tv4 = require('tv4').tv4
res = tv4.validateMultiple(input, @jsonSchema)
res
@isID: (id) -> _.isString(id) and id.length is 24 and id.match(/[a-z0-9]/gi)?.length is 24
getDocumentForIdOrSlug: (idOrSlug, done) ->
idOrSlug = idOrSlug+''
isID = idOrSlug.length is 24 and idOrSlug.match(/[a-z0-9]/gi)?.length is 24
if isID
if Handler.isID(idOrSlug)
@modelClass.findById(idOrSlug).exec (err, document) ->
done(err, document)
else

View file

@ -1,11 +1,13 @@
schema = require('./user_schema')
crypto = require('crypto')
request = require('request')
User = require('./User')
Handler = require('../commons/Handler')
schema = require './user_schema'
crypto = require 'crypto'
request = require 'request'
User = require './User'
Handler = require '../commons/Handler'
languages = require '../routes/languages'
mongoose = require 'mongoose'
config = require '../../server_config'
errors = require '../commons/errors'
async = require 'async'
serverProperties = ['passwordHash', 'emailLower', 'nameLower', 'passwordReset']
privateProperties = ['permissions', 'email', 'firstName', 'lastName', 'gender', 'facebookID', 'music', 'volume']
@ -107,6 +109,27 @@ UserHandler = class UserHandler extends Handler
if req.user and req.user._id.equals(id)
return @sendSuccess(res, @formatEntity(req, req.user))
super(req, res, id)
getNamesByIds: (req, res) ->
ids = req.query.ids or req.body.ids
ids = ids.split(',') if _.isString ids
ids = _.uniq ids
makeFunc = (id) ->
(callback) ->
User.findById(id, {name:1}).exec (err, document) ->
return done(err) if err
callback(null, document?.get('name') or '')
funcs = {}
for id in ids
return errors.badInput(res, "Given an invalid id: #{id}") unless Handler.isID(id)
funcs[id] = makeFunc(id)
async.parallel funcs, (err, results) ->
return errors.serverError err if err
res.send results
res.end()
post: (req, res) ->
return @sendBadInputError(res, 'No input.') if _.isEmpty(req.body)
@ -123,6 +146,7 @@ UserHandler = class UserHandler extends Handler
getByRelationship: (req, res, args...) ->
return @agreeToCLA(req, res) if args[1] is 'agreeToCLA'
return @avatar(req, res, args[0]) if args[1] is 'avatar'
return @getNamesByIds(req, res) if args[1] is 'names'
return @sendNotFoundError(res)
agreeToCLA: (req, res) ->