const passport = require("passport"); const GoogleStrategy = require("passport-google-oauth20").Strategy; // const util = require("util"); // example: console.log("Profile: " + util.inspect(profile, false, null)); const mongoose = require("mongoose"); const keys = require("../config/keys"); const User = mongoose.model("users"); passport.serializeUser((user, done) => { done(null, user.id); }); passport.deserializeUser((id, done) => { User.findById(id).then(user => { done(null, user); }); }); passport.use( new GoogleStrategy( { clientID: keys.googleClientID, clientSecret: keys.googleClientSecret, callbackURL: "/auth/google/callback", proxy: true }, (accessToken, refreshToken, profile, done) => { // callback function User.findOne({ googleId: profile.id }).then(existingUser => { if (existingUser) { // we already have a record with the given profile ID done(null, existingUser); } else { // we don't have a record with the given profile ID new User({ googleId: profile.id }) .save() .then(user => done(null, user)); } }); } ) );