const passport = require('passport'); const GoogleStrategy = require('passport-google-oauth').OAuth2Strategy; const config = require('../../config'); const User = require('../../models/user'); module.exports = function(passport) { passport.use(new GoogleStrategy({ clientID: config.services.google.appId, clientSecret: config.services.google.appSecret, callbackURL: "http://www.example.com/auth/google/callback", }, (accessToken, refreshToken, profile, callback) => { const googleUser = profile.getBasicProfile(); User.findOrCreate( { email: googleUser.getEmail(), 'credentials.method': 'google', 'credentials.userId': googleUser.getId(), }, { avatar: googleUser.getImageUrl(), email: googleUser.getEmail(), firstName: googleUser.getGivenName(), lastName: googleUser.getFamilyName(), credentials: [{ accessToken, userId: googleUser.getId(), method: 'facebook', profile, }], }, (err, user) => { return done(err, user, { accessToken, refreshToken }); } ); } )); };