TwoToc code
[YouAndWeb_TwoToc] / server / auth / facebook / passport.js
1 var passport = require('passport');
2 var FacebookStrategy = require('passport-facebook').Strategy;
3
4 exports.setup = function(User, config) {
5   passport.use(new FacebookStrategy({
6     clientID: config.facebook.clientID,
7     clientSecret: config.facebook.clientSecret,
8     callbackURL: config.facebook.callbackURL,
9     profileFields: [
10       'displayName',
11       'emails'
12     ]
13   },
14   function(accessToken, refreshToken, profile, done) {
15     User.findOneAsync({
16       'facebook.id': profile.id
17     })
18       .then(function(user) {
19         if (!user) {
20           user = new User({
21             name: profile.displayName,
22             email: profile.emails[0].value,
23             role: 'user',
24             provider: 'facebook',
25             facebook: profile._json
26           });
27           user.saveAsync()
28             .then(function(user) {
29               return done(null, user);
30             })
31             .catch(function(err) {
32               return done(err);
33             });
34         } else {
35           return done(null, user);
36         }
37       })
38       .catch(function(err) {
39         return done(err);
40       });
41   }));
42 };