Cleaned up and refactored passport configuration file
This commit is contained in:
@ -5,7 +5,7 @@ var passport = require('passport'),
|
|||||||
GitHubStrategy = require('passport-github').Strategy,
|
GitHubStrategy = require('passport-github').Strategy,
|
||||||
GoogleStrategy = require('passport-google-oauth').OAuth2Strategy,
|
GoogleStrategy = require('passport-google-oauth').OAuth2Strategy,
|
||||||
User = require('../models/User'),
|
User = require('../models/User'),
|
||||||
config = require('./config.json');
|
config = require('./config');
|
||||||
|
|
||||||
passport.serializeUser(function(user, done) {
|
passport.serializeUser(function(user, done) {
|
||||||
done(null, user.id);
|
done(null, user.id);
|
||||||
@ -19,135 +19,78 @@ passport.deserializeUser(function(id, done) {
|
|||||||
|
|
||||||
passport.use(new LocalStrategy(function(username, password, done) {
|
passport.use(new LocalStrategy(function(username, password, done) {
|
||||||
User.findOne({ username: username }, function(err, user) {
|
User.findOne({ username: username }, function(err, user) {
|
||||||
if (err) return done(err);
|
if (!user) return done(null, false, { message: 'No match found for user: ' + username });
|
||||||
if (!user) { return done(null, false, { message: 'Unknown user ' + username }); }
|
|
||||||
user.comparePassword(password, function(err, isMatch) {
|
user.comparePassword(password, function(err, isMatch) {
|
||||||
if (err) return done(err);
|
|
||||||
if(isMatch) {
|
if(isMatch) {
|
||||||
return done(null, user);
|
return done(null, user);
|
||||||
} else {
|
} else {
|
||||||
return done(null, false, { message: 'Invalid password' });
|
return done(null, false, { message: 'Your username or password is incorrect' });
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}));
|
}));
|
||||||
|
|
||||||
// FACEBOOK OAUTH2 LOGIN
|
passport.use(new FacebookStrategy(config.facebook, function (accessToken, refreshToken, profile, done) {
|
||||||
passport.use(new FacebookStrategy({
|
User.findOne({ facebook: profile.id }, function(err, existingUser) {
|
||||||
clientID: config.facebook.clientId,
|
if (existingUser) return done(null, existingUser);
|
||||||
clientSecret: config.facebook.clientSecret,
|
var user = new User();
|
||||||
callbackURL: config.facebook.callbackUrl || "http://localhost:8000/auth/facebook/callback"
|
user.facebook = profile.id;
|
||||||
},
|
user.profile.name = profile.displayName;
|
||||||
function (accessToken, refreshToken, profile, done) {
|
user.profile.email = profile._json.email;
|
||||||
User.findOne({ facebook: profile.id }, function(err, existingUser) {
|
user.profile.gender = profile._json.gender;
|
||||||
if (err) return done(err);
|
user.profile.picture = 'https://graph.facebook.com/' + profile.id + '/picture?type=normal';
|
||||||
|
user.save(function(err) {
|
||||||
if (existingUser) {
|
done(err, user);
|
||||||
return done(null, existingUser);
|
|
||||||
}
|
|
||||||
|
|
||||||
var user = new User({
|
|
||||||
facebook: profile.id
|
|
||||||
});
|
|
||||||
user.profile.name = profile.displayName;
|
|
||||||
user.profile.email = profile._json.email;
|
|
||||||
user.profile.gender = profile._json.gender;
|
|
||||||
user.profile.picture = 'https://graph.facebook.com/' + profile.id + '/picture?type=normal';
|
|
||||||
|
|
||||||
user.save(function(err) {
|
|
||||||
done(err, user);
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
}
|
});
|
||||||
));
|
}));
|
||||||
|
|
||||||
// GITHUB OAUTH2 LOGIN
|
passport.use(new GitHubStrategy(config.github, function(accessToken, refreshToken, profile, done) {
|
||||||
passport.use(new GitHubStrategy({
|
User.findOne({ github: profile.id }, function(err, existingUser) {
|
||||||
clientID: config.github.clientId,
|
if (existingUser) return done(null, existingUser);
|
||||||
clientSecret: config.github.clientSecret,
|
var user = new User();
|
||||||
callbackURL: config.github.callbackUrl
|
user.github = profile.id;
|
||||||
},
|
user.profile.name = profile.displayName;
|
||||||
function(accessToken, refreshToken, profile, done) {
|
user.profile.email = profile._json.email;
|
||||||
User.findOne({ github: profile.id }, function(err, existingUser) {
|
user.profile.picture = profile._json.avatar_url;
|
||||||
if (err) return done(err);
|
user.profile.location = profile._json.location;
|
||||||
|
user.profile.website = profile._json.blog;
|
||||||
if (existingUser) {
|
user.save(function(err) {
|
||||||
return done(null, existingUser);
|
done(err, user);
|
||||||
}
|
|
||||||
console.log(profile)
|
|
||||||
var user = new User({
|
|
||||||
github: profile.id
|
|
||||||
});
|
|
||||||
user.profile.name = profile.displayName;
|
|
||||||
user.profile.email = profile._json.email;
|
|
||||||
user.profile.picture = profile._json.avatar_url;
|
|
||||||
user.profile.location = profile._json.location;
|
|
||||||
user.profile.website = profile._json.blog;
|
|
||||||
|
|
||||||
user.save(function(err) {
|
|
||||||
done(err, user);
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
}
|
});
|
||||||
));
|
}));
|
||||||
|
|
||||||
// TWITTER OAUTH2 LOGIN
|
passport.use(new TwitterStrategy(config.twitter, function(accessToken, tokenSecret, profile, done) {
|
||||||
passport.use(new TwitterStrategy({
|
User.findOne({ twitter: profile.id }, function(err, existingUser) {
|
||||||
consumerKey: config.twitter.clientId,
|
if (existingUser) return done(null, existingUser);
|
||||||
consumerSecret: config.twitter.clientSecret,
|
var user = new User();
|
||||||
callbackURL: '/auth/twitter/callback'
|
user.twitter = profile.id;
|
||||||
},
|
user.tokens.twitter = accessToken;
|
||||||
function(accessToken, tokenSecret, profile, done) {
|
user.profile.name = profile.displayName;
|
||||||
User.findOne({ twitter: profile.id }, function(err, existingUser) {
|
user.profile.location = profile._json.location;
|
||||||
if (err) return done(err);
|
user.profile.picture = profile._json.profile_image_url;
|
||||||
|
user.save(function(err) {
|
||||||
if (existingUser) {
|
done(err, user);
|
||||||
return done(null, existingUser);
|
|
||||||
}
|
|
||||||
|
|
||||||
var user = new User({
|
|
||||||
twitter: profile.id
|
|
||||||
});
|
|
||||||
user.tokens.twitter = accessToken;
|
|
||||||
user.profile.name = profile.displayName;
|
|
||||||
user.profile.location = profile._json.location;
|
|
||||||
user.profile.picture = profile._json.profile_image_url;
|
|
||||||
|
|
||||||
user.save(function(err) {
|
|
||||||
done(err, user);
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
}
|
});
|
||||||
));
|
}));
|
||||||
|
|
||||||
// GOOGLE OAUTH2 LOGIN
|
passport.use(new GoogleStrategy(config.google, function(accessToken, refreshToken, profile, done) {
|
||||||
passport.use(new GoogleStrategy({
|
User.findOne({ google: profile.id }, function(err, existingUser) {
|
||||||
clientID: config.google.clientId,
|
if (existingUser) return done(null, existingUser);
|
||||||
clientSecret: config.google.clientSecret,
|
var user = new User();
|
||||||
callbackURL: config.google.callbackUrl
|
user.google = profile.id;
|
||||||
},
|
user.tokens.google = accessToken;
|
||||||
function(accessToken, refreshToken, profile, done) {
|
user.profile.name = profile.displayName;
|
||||||
User.findOne({ google: profile.id }, function(err, existingUser) {
|
user.profile.email = profile._json.email;
|
||||||
if (err) done(err);
|
user.profile.gender = profile._json.gender;
|
||||||
|
user.profile.picture = profile._json.picture;
|
||||||
if (existingUser) {
|
user.save(function(err) {
|
||||||
return done(null, existingUser);
|
done(err, user);
|
||||||
}
|
|
||||||
var user = new User({
|
|
||||||
google: profile.id
|
|
||||||
});
|
|
||||||
user.tokens.google = accessToken;
|
|
||||||
user.profile.name = profile.displayName;
|
|
||||||
user.profile.email = profile._json.email;
|
|
||||||
user.profile.gender = profile._json.gender;
|
|
||||||
user.profile.picture = profile._json.picture;
|
|
||||||
|
|
||||||
user.save(function(err) {
|
|
||||||
done(err, user);
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
}
|
});
|
||||||
));
|
}));
|
||||||
|
|
||||||
// Simple route middleware to ensure user is authenticated. Otherwise send to login page.
|
// Simple route middleware to ensure user is authenticated. Otherwise send to login page.
|
||||||
exports.ensureAuthenticated = function ensureAuthenticated(req, res, next) {
|
exports.ensureAuthenticated = function ensureAuthenticated(req, res, next) {
|
||||||
|
Reference in New Issue
Block a user