Made public version of a user's LevelSessions available via endpoint.

This commit is contained in:
Nick Winter 2014-06-19 08:07:30 -07:00
parent 548eaefae1
commit aa4832791e
3 changed files with 7 additions and 4 deletions

View file

@ -148,7 +148,7 @@ work = () ->
console.log "Non-UserCodeError:", error.toString() + "\n" + error.stack or error.stackTrace console.log "Non-UserCodeError:", error.toString() + "\n" + error.stack or error.stackTrace
self.cleanUp() self.cleanUp()
return true return true
self.onWorldLoadProgress = onWorldLoadProgress = (progress) -> self.onWorldLoadProgress = onWorldLoadProgress = (progress) ->
#console.log "Worker onWorldLoadProgress" #console.log "Worker onWorldLoadProgress"
self.postMessage self.postMessage

View file

@ -9,6 +9,7 @@ class LevelSessionHandler extends Handler
editableProperties: ['multiplayer', 'players', 'code', 'codeLanguage', 'completed', 'state', editableProperties: ['multiplayer', 'players', 'code', 'codeLanguage', 'completed', 'state',
'levelName', 'creatorName', 'levelID', 'screenshot', 'levelName', 'creatorName', 'levelID', 'screenshot',
'chat', 'teamSpells', 'submitted', 'unsubscribed','playtime'] 'chat', 'teamSpells', 'submitted', 'unsubscribed','playtime']
privateProperties: ['code', 'submittedCode', 'unsubscribed']
jsonSchema: require '../../../app/schemas/models/level_session' jsonSchema: require '../../../app/schemas/models/level_session'
getByRelationship: (req, res, args...) -> getByRelationship: (req, res, args...) ->
@ -20,7 +21,7 @@ class LevelSessionHandler extends Handler
if req.user.isAdmin() or req.user.id is document.creator or ('employer' in req.user.get('permissions')) if req.user.isAdmin() or req.user.id is document.creator or ('employer' in req.user.get('permissions'))
return documentObject return documentObject
else else
return _.omit documentObject, ['submittedCode','code'] return _.omit documentObject, @privateProperties
getActiveSessions: (req, res) -> getActiveSessions: (req, res) ->
return @sendUnauthorizedError(res) unless req.user.isAdmin() return @sendUnauthorizedError(res) unless req.user.isAdmin()

View file

@ -236,12 +236,14 @@ UserHandler = class UserHandler extends Handler
@sendSuccess(res, documents) @sendSuccess(res, documents)
getLevelSessions: (req, res, userID) -> getLevelSessions: (req, res, userID) ->
return @sendUnauthorizedError(res) unless req.user._id+'' is userID or req.user.isAdmin()
query = creator: userID query = creator: userID
isAuthorized = req.user._id+'' is userID or req.user.isAdmin()
projection = null projection = null
if req.query.project if req.query.project
projection = {} projection = {}
projection[field] = 1 for field in req.query.project.split(',') projection[field] = 1 for field in req.query.project.split(',') when isAuthorized or not (field in LevelSessionHandler.privateProperties)
# If no req.query.project, then LevelSessionHandler.formatEntity will remove private properties if needed.
LevelSession.find(query).select(projection).exec (err, documents) => LevelSession.find(query).select(projection).exec (err, documents) =>
return @sendDatabaseError(res, err) if err return @sendDatabaseError(res, err) if err
documents = (LevelSessionHandler.formatEntity(req, doc) for doc in documents) documents = (LevelSessionHandler.formatEntity(req, doc) for doc in documents)