a2eb4a537047fc21686346db88d9d496b5448a79
[motion.git] / 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.findOne({
12       'twitter.id_str': profile.id
13     }, function(err, user) {
14       if (err) {
15         return done(err);
16       }
17       if (!user) {
18         user = new User({
19           name: profile.displayName,
20           username: profile.username,
21           role: 'user',
22           provider: 'twitter',
23           twitter: profile._json
24         });
25         user.save(function(err) {
26           if (err) return done(err);
27           return done(err, user);
28         });
29       } else {
30         return done(err, user);
31       }
32     });
33     }
34   ));
35 };