41 lines
1.2 KiB
JavaScript
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 });
|
|
}
|
|
);
|
|
}
|
|
));
|
|
};
|