From 2a92595517898539ae1de37729803b673424eb53 Mon Sep 17 00:00:00 2001 From: Sahat Yalkabov Date: Mon, 18 Nov 2013 19:43:45 -0500 Subject: [PATCH] facebook auth strategy --- app.js | 2 +- config/passport.js | 20 ++++++++++++++++++-- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/app.js b/app.js index 449a9a8cd3..1cc543bf14 100755 --- a/app.js +++ b/app.js @@ -7,7 +7,7 @@ var express = require('express'), passport = require('passport'); // Configuration (API Keys, Database URI) -var config = require('./config.json'); +var config = require('./config/config.json'); var passportConf = require('./config/passport'); // Load controllers diff --git a/config/passport.js b/config/passport.js index 44958f3634..92615f1fd1 100755 --- a/config/passport.js +++ b/config/passport.js @@ -1,6 +1,9 @@ var passport = require('passport'), LocalStrategy = require('passport-local').Strategy, - User = require('../models/User'); + FacebookStrategy = require('passport-facebook').Strategy, + User = require('../models/User'), + config = require('.config.json'); + passport.serializeUser(function(user, done) { done(null, user.id); @@ -12,7 +15,10 @@ passport.deserializeUser(function(id, done) { }); }); -passport.use(new LocalStrategy({ usernameField: 'email' },function(email, password, done) { +passport.use(new LocalStrategy({ + usernameField: 'email' + }, + function(email, password, done) { User.findOne({ email: email }, function(err, user) { if (err) { return done(err); } if (!user) { return done(null, false, { message: 'Unknown user ' + email }); } @@ -27,6 +33,16 @@ passport.use(new LocalStrategy({ usernameField: 'email' },function(email, passwo }); })); +passport.use(new FacebookStrategy({ + clientID: config.facebook.clientId, + clientSecret: config.facebook.clientSecret, + callbackURL: config.facebook.callbackUrl || "http://localhost:8000/auth/facebook/callback" + }, + function (accessToken, refreshToken, profile, done) { + var user = module.exports.findOrCreateOauthUser(profile.provider, profile.id); + done(null, user); +})); + // Simple route middleware to ensure user is authenticated. Otherwise send to login page. exports.ensureAuthenticated = function ensureAuthenticated(req, res, next) { if (req.isAuthenticated()) { return next(); }