UNPKG

consensus

Version:

vote for topics for your next meeting

62 lines (56 loc) 1.28 kB
var requester = require('request'), Person = require('../lib/Person') ; var PERSONA = 'https://verifier.login.persona.org:443/verify'; exports.signin = function(request, response) { var opts = { uri: PERSONA, json: { assertion: request.body.assertion, audience: request.headers.host } }; requester.post(opts, function(err, res, verified) { if (err) { request.app.logger.error(err, 'error calling persona verifier:', err.message); return; } // verified should have fields: status, email, audience, expires, issuer if (verified.status === 'okay') { response.app.controller.findOrCreatePerson(verified.email) .then(function(person) { if (!person) { response.redirect('/'); return; } request.app.logger.info('login for ' + person.email + ' recorded'); request.session.set('user_id', person.email); response.json({ page: '/' }); }) .fail(function(err) { response.app.logger.warn(err); // set flash message // redirect to index }).done(); } else { request.app.logger.error('persona verifier failed:', (verified.reason || verified.error)); } }); }; exports.signout = function signout(request, response) { request.session.delAll(); response.redirect('/'); };