Skip to content

Commit

Permalink
Twitter Auth backend added
Browse files Browse the repository at this point in the history
Added the basics of twitter authentication.
Requires npm install passport-twitter on server, and client keys for
twitter being changed.
  • Loading branch information
Nick-Case committed Sep 30, 2015
1 parent b1adb13 commit f7f8188
Showing 1 changed file with 63 additions and 2 deletions.
65 changes: 63 additions & 2 deletions authentication.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ var Blog = require('./models/blog').Blog;
var GitHubStrategy = require('passport-github').Strategy;
var WordpressStrategy = require('passport-wordpress').Strategy;
var StackExchangeStrategy = require('passport-stackexchange').Strategy;
var TwitterStrategy = require('passport-twitter').Strategy;
var URI = require('URIjs');

function normalizeUser(profile, callback) {
Expand All @@ -20,6 +21,9 @@ function normalizeUser(profile, callback) {
case 'stackexchange':
identifier = profile.user_id;
break;
case 'twitter':
identifier = profile.id;
break;
}

// Find user in database
Expand Down Expand Up @@ -100,6 +104,27 @@ passport.use(new StackExchangeStrategy({
}
));

//Twitter
passport.use(new TwitterStrategy({
//TODO: Change these for release
consumerKey: "YcewRiLCzJKXxueEk0yJyWM0R",
consumerSecret: "13KOFtCmXrH1uDGGzgq01TBbDNHuk1JQmiogeFcFugfFYTXy4k",
callbackURL: "http://127.0.0.1:3000/auth/twitter/callback",
},
function(accessToken, refreshToken, profile, done) {
console.log("[INFO] Twitter user logged in: %s", profile.id);
normalizeUser(profile, function(normalizedUser) {
if (normalizedUser != null) {
done(null, normalizedUser);
}
else {
//Error
done(normalizedUser);
}
});
}
));

passport.serializeUser(function(user, done) {
done(null, user);
});
Expand Down Expand Up @@ -138,7 +163,7 @@ exports.getBloggerFieldsFromAuthenticatedUser = function (passportjsUser) {
//Check displayName for first/last name combinations
if (passportjsUser.displayName != null)
{
if (passportjsUser.displayName.indexOf(' '))
if (passportjsUser.displayName.indexOf(' ') > -1)
{
var name = passportjsUser.displayName.split(' ');
userAsBlogger.firstName = name[0];
Expand All @@ -151,6 +176,7 @@ exports.getBloggerFieldsFromAuthenticatedUser = function (passportjsUser) {
}

break;

case 'Wordpress':
userAsBlogger = new Blogger({
avatarUrl: passportjsUser._json.avatar_URL,
Expand All @@ -160,13 +186,38 @@ exports.getBloggerFieldsFromAuthenticatedUser = function (passportjsUser) {
vanityUrl: passportjsUser._json.display_name.replace(/\s+/g, '-').toLowerCase()
});
break;

case 'stackexchange':
userAsBlogger = new Blogger({
avatarUrl: passportjsUser.profile_image,
vanityUrl: passportjsUser.display_name,
websiteUrl: passportjsUser.website_url
websiteUrl: passportjsUser.website_url,
});
break;

case 'twitter':
console.log(passportjsUser._json);
userAsBlogger = new Blogger({
vanityUrl: passportjsUser.username,
twitterProfile: passportjsUser.username,
bio: passportjsUser._json.description
});

if (passportjsUser.displayName != null)
{
if (passportjsUser.displayName.indexOf(' ') > -1)
{
var name = passportjsUser.displayName.split(' ');
userAsBlogger.firstName = name[0];
userAsBlogger.lastName = name[name.length - 1];
}
else
{
userAsBlogger.firstName = passportjsUser.displayName;
}
}
userAsBlogger.avatarUrl = passportjsUser.photos[0].value.substring(0, passportjsUser.photos[0].value.length - 11) + ".png";
break;
}
return userAsBlogger;
};
Expand Down Expand Up @@ -207,6 +258,16 @@ exports.serveOAuthRoutes = function(app) {
failureRedirect: '/login',
failureFlash: true
}));

//Twitter routes
app.get('/auth/twitter', passport.authenticate('twitter'));

app.get('/auth/twitter/callback',
passport.authenticate('twitter', {
successRedirect: '/profile',
failureRedirect: '/login',
failureFlash: true
}));
};

exports.deleteUser = function(passportJSUser) {
Expand Down

0 comments on commit f7f8188

Please sign in to comment.