passport and express code example

Example 1: express passport js

// my github https://github.com/restuwahyu13

const { AuthSchema } = require('../models/model.auth')
const GoogleStrategy = require('passport-google-oauth20').Strategy
const FacebookStrategy = require('passport-facebook').Strategy
const GithubStrategy = require('passport-github').Strategy

// passport facebook
exports.passportFacebook = () => {
   return passport.use(
      new FacebookStrategy(
         {
            clientID: process.env.FACEBOOK_ID,
            clientSecret: process.env.FACEBOOK_SECRET,
            callbackURL: "http://localhost:3000/auth/facebook/callback",
            profileFields: ["id", "displayName", "gender", "email", "photos"],
            enableProof: true,
         },
         (accessToken, refreshToken, profile, done) => {
            authSocialSchema.findOne({idSocial: profile.id}, (err, user) => {
               if (err) return done(err, false);
               if (!user) {
                  authSocialSchema.findOrCreate(
                     {
                        idSocial: profile.id,
                        fullname: profile.displayName,
                        email: profile.email,
                        gender: profile.gende,
                        avatar: profile.photos[0]["value"],
                        provider: profile.provider,
                        created_at: Date.now(),
                     },
                     (err, user) => {
                        if (err) return done(err, false);
                        return done(null, user);
                     }
                  );
               } else {
                  return done(null, user);
               }
            });
         }
      )
   );
}

// passport google
exports.passportGoogle = () => {
   return passport.use(
      new GoogleStrategy(
         {
            clientID: process.env.GOOGLE_ID,
            clientSecret: process.env.GOOGLE_SECRET,
            callbackURL: "http://localhost:3000/auth/google/callback",
         },
         (accessToken, refreshToken, profile, done) => {
            authSocialSchema.findOne({idSocial: profile.id}, (err, user) => {
               if (err) return done(err, false);
               if (!user) {
                  authSocialSchema.findOrCreate(
                     {
                        idSocial: profile.id,
                        fullname: profile.displayName,
                        email: profile.emails[0]["value"],
                        avatar: profile.photos[0]["value"],
                        provider: profile.provider,
                        created_at: Date.now(),
                     },
                     (err, user) => {
                        if (err) return done(err, false);
                        return done(null, user);
                     }
                  );
               } else {
                  return done(null, user);
               }
            });
         }
      )
   );
}

// passport passport github
exports.passportGithub = () => {
   return passport.use(
      new GithubStrategy(
         {
            clientID: process.env.GITHUB_ID,
            clientSecret: process.env.GITHUB_SECRET,
            callbackURL: "http://localhost:3000/auth/github/callback",
         },
         (accessToken, refreshToken, profile, done) => {
            authSocialSchema.findOne({idSocial: profile.id}, (err, user) => {
               if (err) return done(err, false);
               if (!user) {
                  authSocialSchema.findOrCreate(
                     {
                        idSocial: profile.id,
                        username: profile.username,
                        fullname: profile.displayName,
                        avatar: profile.photos[0]["value"],
                        provider: profile.provider,
                        created_at: Date.now(),
                     },
                     (err, user) => {
                        if (err) return done(err, false);
                        return done(null, user);
                     }
                  );
               } else {
                  return done(null, user);
               }
            });
         }
      )
   );
}

Example 2: passport js

$ npm install passport-google-oauth20