npm_login_test
Version:
160 lines (130 loc) • 3.81 kB
JavaScript
const GoogleStrategy = require('passport-google-oauth20').Strategy;
const LinkedInStrategy = require('passport-linkedin-oauth2').Strategy;
const FacebookStrategy = require('passport-facebook').Strategy;
const passport = require("passport")
const app_Initialize=()=>{
return passport.initialize()
}
const app_Session=()=>{
return passport.session()
}
const socialMedia_Config = (social_config) => {
var { GOOGLE_CLIENT_ID,
GOOGLE_CLIENT_SECRET,
FACEBOOK_APP_ID,
FACEBOOK_APP_SECRET,
LINKEDIN_CLIENT_ID,
LINKEDIN_CLIENT_SECRET } = social_config
if((!GOOGLE_CLIENT_ID) && (!GOOGLE_CLIENT_SECRET)){
GOOGLE_CLIENT_ID =" ",
GOOGLE_CLIENT_SECRET =" "
}
if((!FACEBOOK_APP_ID) && (!FACEBOOK_APP_SECRET)){
FACEBOOK_APP_ID =" ",
FACEBOOK_APP_SECRET =" "
}
if((!LINKEDIN_CLIENT_ID) && (!LINKEDIN_CLIENT_SECRET)){
LINKEDIN_CLIENT_ID=" ",
LINKEDIN_CLIENT_SECRET=" "
}
passport.use(new GoogleStrategy(
{
clientID: GOOGLE_CLIENT_ID,
clientSecret: GOOGLE_CLIENT_SECRET,
callbackURL: "/auth/google/callback",
profileFields: ["email"],
enableProof: true,
},
function(accessToken, refreshToken, profile,done ){
done(null, profile);
}
)
);
passport.use(
new FacebookStrategy(
{
clientID: FACEBOOK_APP_ID,
clientSecret: FACEBOOK_APP_SECRET,
callbackURL: "/auth/facebook/callback",
},
function (accessToken, refreshToken, profile, done) {
done(null, profile);
}
)
);
passport.use(
new LinkedInStrategy(
{
clientID: LINKEDIN_CLIENT_ID,
clientSecret: LINKEDIN_CLIENT_SECRET,
callbackURL: "/auth/linkedin/callback",
scope: ['r_emailaddress', 'r_liteprofile']
},
async function (accessToken, refreshToken, profile, done) {
done(null, profile);
}
)
);
}
passport.serializeUser((user, done) => {
done(null, user);
});
passport.deserializeUser((user, done) => {
done(null, user);
});
const googleData = (req, res) => {
passport.authenticate('google', { scope: ['profile', 'email'] })
(req, res)
}
const facebookData = (req, res) => {
passport.authenticate("facebook", { scope: "email" })
(req, res)
}
const linkedinData = (req, res) => {
passport.authenticate("linkedin", { scope: ['r_emailaddress', 'r_liteprofile'] })
(req, res)
}
var LINK ={
Google_url:"",
Facebook_url:"",
Linkedin_url:"",
}
const clientURL_config =(URL_config)=>{
const {CLIENT_Google_URL,
CLIENT_Facebook_URL,
CLIENT_Linkedin_URL} = URL_config
LINK.Google_url = CLIENT_Google_URL;
LINK.Facebook_url=CLIENT_Facebook_URL;
LINK.Linkedin_url=CLIENT_Linkedin_URL;
}
const googleCallback = (req, res) => {
passport.authenticate("google",{
successRedirect: LINK.Google_url ,
failureRedirect: "/login/failed",
})(req, res)
}
const facebookCallback = (req, res) => {
passport.authenticate("facebook", {
successRedirect: LINK.Facebook_url,
failureRedirect: "/login/failed",
})(req, res)
}
const linkedinCallback = (req, res) => {
passport.authenticate("linkedin",{
successRedirect: LINK.Linkedin_url,
failureRedirect: "/login/failed",
})(req, res)
}
module.exports.passport = passport
module.exports.allExports = {
googleCallback,
clientURL_config,
googleData,
socialMedia_Config,
app_Session,
app_Initialize,
linkedinCallback,
facebookCallback,
linkedinData,
facebookData
}