Cleaned up and refactored passport configuration file

This commit is contained in:
Sahat Yalkabov
2013-12-06 20:16:39 -05:00
parent 4887ec5dd8
commit b2bb32332d

View File

@ -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) {