const { Strategy: GitHubStrategy } = require('passport-github2'); const socialLogin = require('./socialLogin'); const getProfileDetails = ({ profile }) => ({ email: profile.emails[0].value, id: profile.id, avatarUrl: profile.photos[0].value, username: profile.username, name: profile.displayName, emailVerified: profile.emails[0].verified, }); const githubLogin = socialLogin('github', getProfileDetails); module.exports = () => new GitHubStrategy( { clientID: process.env.GITHUB_CLIENT_ID, clientSecret: process.env.GITHUB_CLIENT_SECRET, callbackURL: `${process.env.DOMAIN_SERVER}${process.env.GITHUB_CALLBACK_URL}`, proxy: false, scope: ['user:email'], ...(process.env.GITHUB_ENTERPRISE_BASE_URL && { authorizationURL: `${process.env.GITHUB_ENTERPRISE_BASE_URL}/login/oauth/authorize`, tokenURL: `${process.env.GITHUB_ENTERPRISE_BASE_URL}/login/oauth/access_token`, userProfileURL: `${process.env.GITHUB_ENTERPRISE_BASE_URL}/api/v3/user`, userEmailURL: `${process.env.GITHUB_ENTERPRISE_BASE_URL}/api/v3/user/emails`, ...(process.env.GITHUB_ENTERPRISE_USER_AGENT && { userAgent: process.env.GITHUB_ENTERPRISE_USER_AGENT, }), }), }, githubLogin, );