d304e8ac95e89973e9ee6d89311e5487099bdb32
[motion.git] / server / auth / google / passport.js
1 var passport = require('passport');
2 var GoogleStrategy = require('passport-google-oauth').OAuth2Strategy;
3
4 exports.setup = function (User, config) {
5   passport.use(new GoogleStrategy({
6       clientID: config.google.clientID,
7       clientSecret: config.google.clientSecret,
8       callbackURL: config.google.callbackURL
9     },
10     function(accessToken, refreshToken, profile, done) {
11       User.findOne({
12         'google.id': profile.id
13       }, function(err, user) {
14         if (!user) {
15           user = new User({
16             name: profile.displayName,
17             email: profile.emails[0].value,
18             role: 'user',
19             username: profile.username,
20             provider: 'google',
21             google: profile._json
22           });
23           user.save(function(err) {
24             if (err) done(err);
25             return done(err, user);
26           });
27         } else {
28           return done(err, user);
29         }
30       });
31     }
32   ));
33 };