Skip to content

Instantly share code, notes, and snippets.

@funador
Last active January 24, 2019 06:04
Show Gist options
  • Save funador/34182840c9b5dc4b89f61a2eff2fcb04 to your computer and use it in GitHub Desktop.
Save funador/34182840c9b5dc4b89f61a2eff2fcb04 to your computer and use it in GitHub Desktop.
// lib/passport.init.js
const passport = require('passport')
const { Strategy: TwitterStrategy } = require('passport-twitter')
const { OAuth2Strategy: GoogleStrategy } = require('passport-google-oauth')
const { Strategy: FacebookStrategy } = require('passport-facebook')
const { Strategy: GithubStrategy} = require('passport-github')
const {
TWITTER_CONFIG, GOOGLE_CONFIG, FACEBOOK_CONFIG, GITHUB_CONFIG
} = require('../config')
module.exports = () => {
// Allowing passport to serialize and deserialize users into sessions
passport.serializeUser((user, cb) => cb(null, user))
passport.deserializeUser((obj, cb) => cb(null, obj))
// The function that is called when an OAuth provider sends back user
// information. Normally, you would save the user to the database here
// in a callback that was customized for each provider.
const callback = (accessToken, refreshToken, profile, cb) => cb(null, profile)
// Adding each OAuth provider's strategy to passport
passport.use(new TwitterStrategy(TWITTER_CONFIG, callback))
passport.use(new GoogleStrategy(GOOGLE_CONFIG, callback))
passport.use(new FacebookStrategy(FACEBOOK_CONFIG, callback))
passport.use(new GithubStrategy(GITHUB_CONFIG, callback))
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment