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