mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2025-04-30 07:53:45 -04:00
Laid down the basics for an admin server endpoint
This commit is contained in:
parent
a61d0e5569
commit
bea751eed9
4 changed files with 35 additions and 0 deletions
server
achievements
commons
routes
|
@ -20,4 +20,10 @@ EarnedAchievementSchema.pre 'save', (next) ->
|
||||||
EarnedAchievementSchema.index({user: 1, achievement: 1}, {unique: true, name: 'earned achievement index'})
|
EarnedAchievementSchema.index({user: 1, achievement: 1}, {unique: true, name: 'earned achievement index'})
|
||||||
EarnedAchievementSchema.index({user: 1, changed: -1}, {name: 'latest '})
|
EarnedAchievementSchema.index({user: 1, changed: -1}, {name: 'latest '})
|
||||||
|
|
||||||
|
EarnedAchievementSchema.static 'recalculate', (callback) ->
|
||||||
|
callback('pass')
|
||||||
|
|
||||||
module.exports = EarnedAchievement = mongoose.model('EarnedAchievement', EarnedAchievementSchema)
|
module.exports = EarnedAchievement = mongoose.model('EarnedAchievement', EarnedAchievementSchema)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
log = require 'winston'
|
||||||
mongoose = require('mongoose')
|
mongoose = require('mongoose')
|
||||||
EarnedAchievement = require './EarnedAchievement'
|
EarnedAchievement = require './EarnedAchievement'
|
||||||
Handler = require '../commons/Handler'
|
Handler = require '../commons/Handler'
|
||||||
|
@ -9,4 +10,7 @@ class EarnedAchievementHandler extends Handler
|
||||||
hasAccess: (req) ->
|
hasAccess: (req) ->
|
||||||
req.method is 'GET'
|
req.method is 'GET'
|
||||||
|
|
||||||
|
recalculate: (req, res) ->
|
||||||
|
EarnedAchievement.recalculate (data) => @sendSuccess(res, data)
|
||||||
|
|
||||||
module.exports = new EarnedAchievementHandler()
|
module.exports = new EarnedAchievementHandler()
|
||||||
|
|
|
@ -14,6 +14,7 @@ module.exports.handlers =
|
||||||
|
|
||||||
module.exports.routes =
|
module.exports.routes =
|
||||||
[
|
[
|
||||||
|
'routes/admin'
|
||||||
'routes/auth'
|
'routes/auth'
|
||||||
'routes/contact'
|
'routes/contact'
|
||||||
'routes/db'
|
'routes/db'
|
||||||
|
|
24
server/routes/admin.coffee
Normal file
24
server/routes/admin.coffee
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
log = require 'winston'
|
||||||
|
errors = require '../commons/errors'
|
||||||
|
handlers = require('../commons/mapping').handlers
|
||||||
|
|
||||||
|
module.exports.setup = (app) ->
|
||||||
|
app.all '/admin/*', (req, res) ->
|
||||||
|
res.setHeader('Content-Type', 'application/json')
|
||||||
|
|
||||||
|
module = req.path[7..]
|
||||||
|
parts = module.split('/')
|
||||||
|
module = parts[0]
|
||||||
|
|
||||||
|
return errors.unauthorized(res, 'Must be admin to access this area.') unless req.user?.isAdmin()
|
||||||
|
|
||||||
|
try
|
||||||
|
moduleName = module.replace '.', '_'
|
||||||
|
name = handlers[moduleName]
|
||||||
|
handler = require('../' + name)
|
||||||
|
|
||||||
|
return handler[parts[1]](req, res, parts[2..]...) if parts[1] of handler
|
||||||
|
|
||||||
|
catch error
|
||||||
|
log.error("Error trying db method '#{req.route.method}' route '#{parts}' from #{name}: #{error}")
|
||||||
|
errors.notFound(res, "Route #{req.path} not found.")
|
Loading…
Add table
Add a link
Reference in a new issue