mirror of
https://github.com/sudoxnym/habitica.git
synced 2026-08-05 03:52:14 +00:00
Merge pull request #432 from switz/middleware
@lefnire => Clean up middleware
This commit is contained in:
commit
7fe4f06f0c
2 changed files with 29 additions and 41 deletions
|
|
@ -3,16 +3,17 @@ path = require 'path'
|
|||
express = require 'express'
|
||||
gzippo = require 'gzippo'
|
||||
derby = require 'derby'
|
||||
racer = require 'racer'
|
||||
auth = require 'derby-auth'
|
||||
app = require '../app'
|
||||
serverError = require './serverError'
|
||||
MongoStore = require('connect-mongo')(express)
|
||||
auth = require 'derby-auth'
|
||||
priv = require './private'
|
||||
habitrpgStore = require('./store')
|
||||
habitrpgStore = require './store'
|
||||
middleware = require './middleware'
|
||||
|
||||
## RACER CONFIGURATION ##
|
||||
|
||||
racer = require 'racer'
|
||||
racer.io.set('transports', ['xhr-polling'])
|
||||
racer.ioClient.set('reconnection limit', 300000) # max reconect timeout to 5 minutes
|
||||
racer.set('bundleTimeout', 40000)
|
||||
|
|
@ -26,7 +27,7 @@ expressApp = express()
|
|||
server = http.createServer expressApp
|
||||
module.exports = server
|
||||
|
||||
derby.use(require 'racer-db-mongo')
|
||||
derby.use require('racer-db-mongo')
|
||||
store = derby.createStore
|
||||
db: {type: 'Mongo', uri: process.env.NODE_DB_URI, safe:true}
|
||||
listen: server
|
||||
|
|
@ -53,57 +54,27 @@ auth.store(store, habitrpgStore.customAccessControl)
|
|||
|
||||
mongo_store = new MongoStore {url: process.env.NODE_DB_URI}, ->
|
||||
expressApp
|
||||
#.use (req, res, next) ->
|
||||
# if toobusy()
|
||||
# return res.redirect 307, '/500.html'
|
||||
# else
|
||||
# next()
|
||||
|
||||
.use(express.favicon())
|
||||
# Gzip static files and serve from memory
|
||||
.use(gzippo.staticGzip publicPath, maxAge: ONE_YEAR)
|
||||
.use(gzippo.staticGzip(publicPath, maxAge: ONE_YEAR))
|
||||
# Gzip dynamically rendered content
|
||||
.use(express.compress())
|
||||
|
||||
# Uncomment to add form data parsing support
|
||||
.use(express.bodyParser())
|
||||
.use(express.methodOverride())
|
||||
|
||||
# Uncomment and supply secret to add Derby session handling
|
||||
# Derby session middleware creates req.session and socket.io sessions
|
||||
.use(express.cookieParser())
|
||||
.use(store.sessionMiddleware
|
||||
secret: process.env.SESSION_SECRET || 'YOUR SECRET HERE'
|
||||
cookie: {maxAge: TWO_WEEKS} # defaults to 2 weeks? aka, can delete this line?
|
||||
cookie: { maxAge: TWO_WEEKS } # defaults to 2 weeks? aka, can delete this line?
|
||||
store: mongo_store
|
||||
)
|
||||
|
||||
#show splash page for newcomers
|
||||
.use (req, res, next) ->
|
||||
# This was an API call, not a page load
|
||||
return next() if req.is('json')
|
||||
|
||||
if !req.session.userId? and !req.query?.play? and req.url == '/'
|
||||
return res.redirect('/splash.html')
|
||||
else
|
||||
next()
|
||||
|
||||
# Show splash page for newcomers
|
||||
.use(middleware.splash)
|
||||
# Adds req.getModel method
|
||||
.use(store.modelMiddleware())
|
||||
# Middelware can be inserted after the modelMiddleware and before
|
||||
# the app router to pass server accessible data to a model
|
||||
.use(priv.middleware)
|
||||
|
||||
# HabitRPG Custom Middleware
|
||||
.use (req, res, next) ->
|
||||
model = req.getModel()
|
||||
_view = model.get('_view') || {}
|
||||
## Set _mobileDevice to true or false so view can exclude portions from mobile device
|
||||
_view.mobileDevice = /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(req.header 'User-Agent')
|
||||
_view.nodeEnv = process.env.NODE_ENV
|
||||
model.set '_view', _view
|
||||
next()
|
||||
|
||||
.use(middleware.view)
|
||||
.use(auth.middleware(strategies, options))
|
||||
# Creates an express middleware from the app's routes
|
||||
.use(app.router())
|
||||
|
|
@ -111,10 +82,10 @@ mongo_store = new MongoStore {url: process.env.NODE_DB_URI}, ->
|
|||
.use(require('./static').middleware)
|
||||
.use(require('./deprecated').middleware)
|
||||
.use(expressApp.router)
|
||||
.use(serverError root)
|
||||
.use(serverError(root))
|
||||
|
||||
priv.routes(expressApp)
|
||||
|
||||
# Errors
|
||||
expressApp.all '*', (req) ->
|
||||
throw "404: #{req.url}"
|
||||
throw "404: #{req.url}"
|
||||
|
|
|
|||
17
src/server/middleware.coffee
Normal file
17
src/server/middleware.coffee
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
module.exports.splash = (req, res, next) ->
|
||||
# This was an API call, not a page load
|
||||
return next() if req.is('json')
|
||||
|
||||
if !req.session.userId? and !req.query?.play?
|
||||
res.redirect('/splash.html')
|
||||
else
|
||||
next()
|
||||
|
||||
module.exports.view = (req, res, next) ->
|
||||
model = req.getModel()
|
||||
_view = model.get('_view') || {}
|
||||
## Set _mobileDevice to true or false so view can exclude portions from mobile device
|
||||
_view.mobileDevice = /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(req.header 'User-Agent')
|
||||
_view.nodeEnv = process.env.NODE_ENV
|
||||
model.set '_view', _view
|
||||
next()
|
||||
Loading…
Reference in a new issue