Skip to content

Instantly share code, notes, and snippets.

@p-baleine
Created June 30, 2012 19:50
Show Gist options
  • Save p-baleine/3025265 to your computer and use it in GitHub Desktop.
Save p-baleine/3025265 to your computer and use it in GitHub Desktop.
express-sample-user-auth coffeescript version
express = require 'express'
mongoose = require 'mongoose'
SessionMongoose = require 'session-mongoose'
Resource = require 'express-resource'
messages = require 'express-messages'
db = require './db'
app = module.exports = express.createServer()
User = null
# configuration
app.configure 'development', () ->
app.set 'mongoconn', 'mongodb://localhost/nameko-blog'
app.use express.errorHandler( dumpExceptions: true, showStack: true )
app.configure () ->
app.set 'mongoconn', 'mongodb://localhost/nameko-blog'
app.use express.errorHandler()
app.configure () ->
app.set 'views', "#{__dirname}/views"
app.set 'view engine', 'jade'
app.use express.bodyParser()
app.use express.cookieParser()
app.use exports.session(
store: new SessionMongoose( url: app.set 'mongoconn' ),
secret: 'nameko'
)
app.use express.methodOverride()
app.use app.router
app.use express.static(__dirname + '/public')
app.dynamicHelper( messages: messages )
db(app.set 'mongoconn').init(() -> User = require('./models/user').model())
requireLogin = (req, res, next) ->
unless req.url.match(/login/) or req.user
req.flash 'info', 'please login'
req.redirect '/login'
next()
loadUser = (req, res, next) ->
if req.session.user
User.findOne { id: req.session.user.id }, (err, doc) ->
req.user = doc unless err
next()
else
next()
app.all '/*', loadUser, requireLogin
app.listen 3000, () ->
console.log 'Express server listening on port %d in %s mode', app.address().port, app.settings.env
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment