TwoToc code
[YouAndWeb_TwoToc] / 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.findOneAsync({
12       'google.id': profile.id
13     })
14       .then(function(user) {
15         if (!user) {
16           user = new User({
17             name: profile.displayName,
18             email: profile.emails[0].value,
19             role: 'user',
20             username: profile.emails[0].value.split('@')[0],
21             provider: 'google',
22             google: profile._json
23           });
24           user.saveAsync()
25             .then(function(user) {
26               return done(null, user);
27             })
28             .catch(function(err) {
29               return done(err);
30             });
31         } else {
32           return done(null, user);
33         }
34       })
35       .catch(function(err) {
36         return done(err);
37       });
38   }));
39 };