Open spolyak opened 9 years ago
Cool :+1:
yeah, I'm working on it... Trying to figure it out...
var async = require('async'),
_ = require('underscore'),
request = require('request');
var passport = require('passport'),
passportBitbucketStrategy = require('passport-bitbucket').Strategy;
var keystone = require('keystone'),
User = keystone.list('User');
var credentials = {
consumerKey: process.env.BITBUCKET_CONSUMER_KEY,
consumerSecret: process.env.BITBUCKET_CONSUMER_SECRET,
callbackURL: process.env.BITBUCKET_CALLBACK_URL
};
exports.authenticateUser = function(req, res, next)
{
var self = this;
var redirect = '/auth/confirm';
if (req.cookies.target && req.cookies.target == 'app') redirect = '/auth/app';
// Begin process
console.log('============================================================');
console.log('[services.bitbucket] - Triggered authentication process...');
console.log('------------------------------------------------------------');
// Initalise Bitbucket credentials
var bitbucketStrategy = new passportBitbucketStrategy(credentials, function(token, tokenSecret, profile, done) {
done(null, {
accessToken: token,
refreshToken: tokenSecret,
profile: profile
});
});
// Pass through authentication to passport
passport.use(bitbucketStrategy);
// Save user data once returning from Bitbucket
if (_.has(req.query, 'cb')) {
console.log('[services.bitbucket] - Callback workflow detected, attempting to process data...');
console.log('------------------------------------------------------------');
passport.authenticate('bitbucket', { session: false }, function(err, data, info) {
if (err || !data) {
console.log("[services.bitbucket] - Error retrieving BitBucket account data - " + JSON.stringify(err));
return res.redirect('/signin');
}
console.log('[services.bitbucket] - Successfully retrieved BitBucket account data, processing...');
console.log('------------------------------------------------------------');
//console.log(JSON.stringify(data));
var name = data.profile && data.profile.displayName ? data.profile.displayName.split(' ') : [];
var auth = {
type: 'bitbucket',
name: {
first: name.length ? name[0] : '',
last: name.length > 1 ? name[1] : ''
},
website: '', //data.profile._json.blog'',
profileId: data.profile.id,
username: data.profile.username,
avatar: data.profile._json.avatar_url,
accessToken: data.accessToken,
refreshToken: data.refreshToken
}
req.session.auth = auth;
return res.redirect(redirect);
})(req, res, next);
// Perform inital authentication request to Bitbucket
} else {
console.log('[services.bitbucket] - Authentication workflow detected, attempting to request access...');
console.log('------------------------------------------------------------');
passport.authenticate('bitbucket')(req, res, next);
}
};
Hi I was wondering if you ever got the LinkedIn login working? I'm about to try that myself.
It would be helpful to expand the passport social login SydJS website options to have service integrations for Bitbucket and LinkedIn.