Files
Eventment-API/strategies/auth/google.js

41 lines
1.2 KiB
JavaScript

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 });
}
);
}
));
};