mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2025-04-27 14:33:59 -04:00
Added a route for getting user names by id.
This commit is contained in:
parent
82f0860b40
commit
52a6cdf09c
2 changed files with 32 additions and 7 deletions
server
|
@ -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
|
||||
|
|
|
@ -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) ->
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue