passport-faithlife
Version:
Faithlife authentication strategy for Passport and Node.js.
91 lines (78 loc) • 2.33 kB
JavaScript
var bunyan = require('bunyan');
var ensureAuthenticated = require('connect-ensure-login').ensureAuthenticated;
var session = require('cookie-session');
var passport = require('passport');
var restify = require('restify');
var FaithlifeStrategy = require('../lib').Strategy;
var log = bunyan.createLogger({name: "getmetest"});
var server = restify.createServer();
server.use(restify.queryParser());
server.use(restify.bodyParser());
server.use(session({ secret: 'shhh' }));
server.use(passport.initialize());
server.use(passport.session());
passport.serializeUser(function(user, done) {
done(null, JSON.stringify(user));
});
passport.deserializeUser(function(id, done) {
done(null, JSON.parse(id));
});
passport.use(new FaithlifeStrategy({
consumerKey: '28E248887A24B54B6966EC74054650CC815A771E',
consumerSecret: '2C63E30857A87F3D510F0005FD41E7273338AEDC',
signatureMethod: 'PLAINTEXT',
callbackURL: '/callback'
},
function(token, tokenSecret, profile, done) {
console.log('CALLBACK:', token, tokenSecret, profile);
done(null, {
credentials: {
token: token,
secret: tokenSecret
}
});
}
));
server.use(function (req, res, next) {
res.redirect = function (url) {
this.status(302);
this.setHeader('Location', url);
this.end();
}
next();
});
server.get('/',
function(req, res, next) {
log.info('We home!');
log.info('Session: %j', req.session);
log.info('User: %j', req.user);
next();
},
ensureAuthenticated({ redirectTo: '/login' }),
function (req, res) {
res.send('Welcome!');
}
);
server.get('/about',
ensureAuthenticated({ redirectTo: '/login' }),
function (req, res) {
res.send('About');
}
);
server.get('/login',
function(req, res, next) {
log.info('We login!');
next();
},
passport.authenticate('faithlife')
);
server.get('/callback',
passport.authenticate('faithlife', { successReturnToOrRedirect: '/', failureRedirect: '/login' }),
function(req, res, next) {
log.info('great success!');
res.redirect('/');
}
);
server.listen(8080, function() {
log.info('%s listening at %s', server.name, server.url);
});