boomerang-server
Version:
LDApp based BoomerangJS server
63 lines (44 loc) • 1.45 kB
JavaScript
;
var
acceptAllCertsRequest = require('./utils/accept-all-certs-request'),
uuid = require('uuid'),
Promise = require('es6-promise').Promise,
PubkeyLogin = require('pubkey-login');
var AuthNModule = function (config) {
var self = this;
var initPubkeyLogin = function (app) {
if (!config.authn.enableWebId) {
return Promise.resolve(app);
}
//TODO: request should be configurable
var store = new config.rdf.LdpStore(
{'request': acceptAllCertsRequest});
self.pubkeyLogin = new PubkeyLogin({'rdf': config.rdf, 'store': store});
app.use(self.pubkeyLogin.middleware);
return Promise.resolve(app);
};
var initSessionLogin = function (app) {
if (!config.authn.enableSessionLogin) {
return Promise.resolve(app);
}
var agents = {};
app.use(function (req, res, next) {
if (!(req.sessionID in agents)) {
agents[req.sessionID] = 'urn:uuid:' + uuid().toString();
}
req.session.agent = agents[req.sessionID];
next();
});
return Promise.resolve(app);
};
var initAssertion = function (app) {
app.use('/login-assertion', self.pubkeyLogin.assertionMiddleware);
return Promise.resolve(app);
};
self.init = function (app) {
return initPubkeyLogin(app)
.then(function () { return initSessionLogin(app); })
.then(function () { return initAssertion(app); });
};
};
module.exports = AuthNModule;