Fix sending too much and not enough data on arena sessions

This commit is contained in:
Nick Winter 2016-08-23 16:02:03 -07:00
parent e05536e1e4
commit bfa49cbbc6
3 changed files with 4 additions and 6 deletions

View file

@ -76,7 +76,7 @@ module.exports = class LevelLoader extends CocoClass
else
@level = @supermodel.loadModel(@level, 'level').model
@listenToOnce @level, 'sync', @onLevelLoaded
reportLoadError: ->
window.tracker?.trackEvent 'LevelLoadError',
category: 'Error',
@ -154,7 +154,7 @@ module.exports = class LevelLoader extends CocoClass
session = new LevelSession().setURL url
if @headless and not @level.isType('web-dev')
session.project = ['creator', 'team', 'heroConfig', 'codeLanguage', 'submittedCodeLanguage', 'state', 'submittedCode']
session.project = ['creator', 'team', 'heroConfig', 'codeLanguage', 'submittedCodeLanguage', 'state', 'submittedCode', 'submitted']
@sessionResource = @supermodel.loadModel(session, 'level_session', {cache: false})
@session = @sessionResource.model
if @opponentSessionID

View file

@ -19,14 +19,13 @@ class LevelSessionHandler extends Handler
submittedCode = document.submittedCode ? {}
unless req.user?.isAdmin() or
req.user?.id is document.creator or
('employer' in (req.user?.get('permissions') ? [])) or
not document.submittedCode # TODO: only allow leaderboard access to non-top-5 solutions
document = _.omit document, @privateProperties
if req.query.interpret
plan = submittedCode[if document.team is 'humans' then 'hero-placeholder' else 'hero-placeholder-1']?.plan ? ''
plan = LZString.compressToUTF16 plan
document.interpret = plan
document.code = submittedCode
document.code = {'hero-placeholder': {plan: ''}, 'hero-placeholder-1': {plan: ''}}
return document
getActiveSessions: (req, res) ->
@ -58,7 +57,6 @@ class LevelSessionHandler extends Handler
hasAccessToDocument: (req, document, method=null) ->
get = (method ? req.method).toLowerCase() is 'get'
return true if get and document.get('submitted')
return true if get and ('employer' in (req.user?.get('permissions') ? []))
return true if get and not document.get('submittedCode') # Allow leaderboard access to non-multiplayer sessions
super(arguments...)

View file

@ -102,7 +102,7 @@ LevelSessionSchema.set('toObject', {
plan = submittedCode[if doc.get('team') is 'humans' then 'hero-placeholder' else 'hero-placeholder-1']?.plan ? ''
plan = LZString.compressToUTF16 plan
ret.interpret = plan
ret.code = submittedCode
ret.code = {'hero-placeholder': {plan: ''}, 'hero-placeholder-1': {plan: ''}}
return ret
})