From 60c1e937a1368adaba0147baad7797a51b061a34 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Thu, 2 May 2013 12:13:06 -0400 Subject: [PATCH] tweaking twitter login so that if the config is blank, trying to log in via twitter won't crash the server --- public/templates/footer.tpl | 1 - public/templates/login.tpl | 3 +-- src/webserver.js | 39 ++++++++++++++++++++++--------------- 3 files changed, 24 insertions(+), 19 deletions(-) diff --git a/public/templates/footer.tpl b/public/templates/footer.tpl index 08fb9d2fb7..dd3de05b00 100644 --- a/public/templates/footer.tpl +++ b/public/templates/footer.tpl @@ -45,7 +45,6 @@ }); socket.emit('api:user.get', { fields: ['username', 'picture'] }); socket.on('api:user.get', function(data) { - console.log(data); if (data.uid > 0) { var gravatar = document.createElement('img'), name = document.createElement('span') diff --git a/public/templates/login.tpl b/public/templates/login.tpl index 8cf6aca923..d2f06bef2b 100644 --- a/public/templates/login.tpl +++ b/public/templates/login.tpl @@ -9,9 +9,8 @@


-   +   Forgot Password?
- Forgot Password?

Alternative Logins

diff --git a/src/webserver.js b/src/webserver.js index 586c462a9c..95d55d9d29 100644 --- a/src/webserver.js +++ b/src/webserver.js @@ -8,7 +8,8 @@ var express = require('express'), redisServer = redis.createClient(config.redis.port, config.redis.host, config.redis.options), passport = require('passport'), passportLocal = require('passport-local').Strategy, - passportTwitter = require('passport-twitter').Strategy; + passportTwitter = require('passport-twitter').Strategy, + login_strategies = []; passport.use(new passportLocal(function(user, password, next) { global.modules.user.loginViaLocal(user, password, function(login) { @@ -17,16 +18,20 @@ passport.use(new passportLocal(function(user, password, next) { }); })); -passport.use(new passportTwitter({ - consumerKey: config.twitter.key, - consumerSecret: config.twitter.secret, - callbackURL: config.url + "auth/twitter/callback" -}, function(token, tokenSecret, profile, done) { - global.modules.user.loginViaTwitter(profile.id, profile.username, function(err, user) { - if (err) { return done(err); } - done(null, user); - }); -})); +if (config.twitter.key.length > 0 && config.twitter.secret.length > 0) { + passport.use(new passportTwitter({ + consumerKey: config.twitter.key, + consumerSecret: config.twitter.secret, + callbackURL: config.url + "auth/twitter/callback" + }, function(token, tokenSecret, profile, done) { + global.modules.user.loginViaTwitter(profile.id, profile.username, function(err, user) { + if (err) { return done(err); } + done(null, user); + }); + })); + + login_strategies.push('twitter'); +} passport.serializeUser(function(user, done) { done(null, user.uid); @@ -147,12 +152,14 @@ passport.deserializeUser(function(uid, done) { }); }); - app.get('/auth/twitter', passport.authenticate('twitter')); + if (login_strategies.indexOf('twitter') !== -1) { + app.get('/auth/twitter', passport.authenticate('twitter')); - app.get('/auth/twitter/callback', passport.authenticate('twitter', { - successRedirect: '/', - failureRedirect: '/login' - })); + app.get('/auth/twitter/callback', passport.authenticate('twitter', { + successRedirect: '/', + failureRedirect: '/login' + })); + } app.get('/reset/:code', function(req, res) { res.send(templates['header'] + templates['reset_code'].parse({ reset_code: req.params.code }) + templates['footer']);