Created
July 2, 2014 11:05
-
-
Save vmakhaev/a9dce3dec7ecd7fe9a67 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
coffeeify = require 'coffeeify' | |
express = require 'express' | |
session = require 'express-session' | |
serveStatic = require 'serve-static' | |
compression = require 'compression' | |
bodyParser = require 'body-parser' | |
cookieParser = require 'cookie-parser' | |
RedisStore = require('connect-redis')(session) | |
derby = require 'derby' | |
racerHighWay = require 'racer-highway' | |
liveDbMongo = require 'livedb-mongo' | |
redis = require 'redis' | |
app = require '../app' | |
errorMiddleware = require '../error/middleware' | |
derbyLogin = require 'derby-login' | |
authOptions = require '../config/auth' | |
hooks = require './hooks' | |
derby.use require 'racer-bundle' | |
derby.use require('racer-schema'), require '../validation' | |
redisClient = redis.createClient process.env.REDIS_PORT, process.env.REDIS_HOST | |
redisClient.auth process.env.REDIS_PASSWORD | |
redisClient.select process.env.REDIS_DATABASE | |
sessionStore = new RedisStore client: redisClient | |
sessionMiddleware = session | |
secret: process.env.SESSION_SECRET | |
store: sessionStore | |
store = derby.createStore | |
db: liveDbMongo process.env.MONGO_URL + '?auto_reconnect', safe: true | |
redis: redisClient | |
hooks store | |
handlers = racerHighWay store, session: sessionMiddleware | |
store.on 'bundle', (browserify) -> | |
browserify.transform global: true, coffeeify | |
pack = browserify.pack | |
browserify.pack = (options) -> | |
detectTransform = options.globalTransform.shift() | |
options.globalTransform.push detectTransform | |
pack.apply this, arguments | |
publicDir = __dirname + '/../public' | |
createUserId = (err, req, res, next) -> | |
model = req.getModel() | |
userId = req.session.userId | |
if !userId | |
userId = req.session.userId = model.id() | |
model.set '_session.userId', userId | |
next() | |
expressApp = module.exports = express() | |
.use handlers.middleware | |
.use compression() | |
.use serveStatic publicDir | |
.use cookieParser process.env.SESSION_SECRET | |
.use sessionMiddleware | |
.use store.modelMiddleware() | |
.use createUserId | |
.use bodyParser() | |
.use derbyLogin.middleware authOptions | |
.use app.router() | |
derbyLogin.routes expressApp, store | |
expressApp.all '*', (req, res, next) -> | |
next '403: ' + req.url | |
expressApp.use errorMiddleware | |
app.writeScripts store, publicDir, {extensions: ['.coffee']}, -> | |
expressApp._upgrade = handlers.upgrade |
Author
vmakhaev
commented
Jul 2, 2014
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment