Skip to content

Instantly share code, notes, and snippets.

@kav
Created September 15, 2011 22:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kav/1220663 to your computer and use it in GitHub Desktop.
Save kav/1220663 to your computer and use it in GitHub Desktop.
Facebook Connect Auth Middleware
http = require('http')
module.exports = (app) ->
ensureLogin: (req, res, next) ->
return res.end() unless req.session?
if req.session.fbid?
return next()
req.authenticate ['facebook'], (error, authenticated) ->
unless authenticated then return res.end()
fbUser = req.getAuthDetails().user
fbid = req.session.fbid = fbUser.id
name = fbUser.name
email = fbUser.email
max = 2
avatar = Math.floor(Math.random()*(max + 1))
avatar = avatar + 3 if fbUser.gender is 'female'
# Hiding last name. Certainly doesn't add privacy for folks like me... -Kav
name = "#{req.getAuthDetails().user.first_name} #{req.getAuthDetails().user.last_name[0]}."
user = app.models.users.get(fbid)
newUserMail(fbUser) unless user?
user ?= app.models.users.create id: fbid, name: name, email: email, avatar:avatar
user.set online: true
parsedUrl = require('url').parse(req.url)
return res.redirect(parsedUrl.pathname) if request.url isnt parsedUrl.pathname
return next()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment