Skip to content

Instantly share code, notes, and snippets.

@geta6
Created December 25, 2012 07:21
Show Gist options
  • Select an option

  • Save geta6/4372015 to your computer and use it in GitHub Desktop.

Select an option

Save geta6/4372015 to your computer and use it in GitHub Desktop.
Passport example
# Modules
http = require 'http'
express = require 'express'
connect =
flash: require 'connect-flash'
session: (require 'connect-mongo') express
# Passport
passport = require 'passport'
{Strategy} = require 'passport-twitter'
passport.serializeUser (user, done) ->
done null, user
passport.deserializeUser (id, done) ->
done null, id
passport.use new Strategy options, (token, secret_token, profile, done) ->
process.nextTick ->
done null,
id: profile.id
profile: profile
token: token
secret_token: secret_token
# Express
app = express()
app.configure ->
app.set 'port', process.env.PORT || 3000
app.set 'views', "#{__dirname}/views"
app.set 'view engine', 'jade'
app.use express.logger 'dev'
app.use express.cookieParser()
app.use express.bodyParser()
app.use express.methodOverride()
app.use express.session
secret: 'keyboard cat'
store: new connect.session(db: 'session_store')
app.use connect.flash()
app.use passport.initialize()
app.use passport.session()
app.use app.router
app.use express.static "#{__dirname}/public"
ensure = (req, res, next) ->
if req.isAuthenticated()
return res.redirect '/signin'
else
return next()
app.get '/', (req, res) ->
if req.isAuthenticated()
res.render 'index', req: req
else
res.render 'authen', req: req
app.get 'mypage', ensure, (req, res) ->
res.render 'userpage', req: req
app.get '/signin', passport.authorize 'twitter'
app.get '/callback', passport.authenticate 'twitter',
successRedirect: '/'
failureRedirect: '/signin'
failureFlash: yes
app.get '/signout', (req, res) ->
req.logout()
res.redirect '/'
http.createServer(app).listen (app.get 'port'), ->
console.info "coffee cupped on #{app.get 'port'}"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment