UNPKG

passport-faithlife

Version:

Faithlife authentication strategy for Passport and Node.js.

91 lines (78 loc) 2.33 kB
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); });