feathers-authentication
Version:
Add Authentication to your FeathersJS app.
117 lines (84 loc) • 3.35 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = init;
var _debug = require('debug');
var _debug2 = _interopRequireDefault(_debug);
var _hooks = require('./hooks');
var _hooks2 = _interopRequireDefault(_hooks);
var _express = require('./express');
var _express2 = _interopRequireDefault(_express);
var _passport = require('passport');
var _passport2 = _interopRequireDefault(_passport);
var _passport3 = require('./passport');
var _passport4 = _interopRequireDefault(_passport3);
var _options = require('./options');
var _options2 = _interopRequireDefault(_options);
var _service = require('./service');
var _service2 = _interopRequireDefault(_service);
var _socket = require('./socket');
var _socket2 = _interopRequireDefault(_socket);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var debug = (0, _debug2.default)('feathers-authentication:index');
function init() {
var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
return function authentication() {
var app = this;
var _super = app.setup;
// Merge and flatten options
var options = (0, _options2.default)(config);
if (app.passport) {
throw new Error('You have already registered authentication on this app. You only need to do it once.');
}
if (!options.secret) {
throw new Error('You must provide a \'secret\' in your authentication configuration');
}
// Make sure cookies don't have to be sent over HTTPS
// when in development or test mode.
if (app.get('env') === 'development' || app.get('env') === 'test') {
options.cookie.secure = false;
}
app.set('authentication', options);
app.set('auth', options);
debug('Setting up Passport');
// Set up our framework adapter
_passport2.default.framework(_passport4.default.call(app, options));
// Expose passport on the app object
app.passport = _passport2.default;
// Alias to passport for less keystrokes
app.authenticate = _passport2.default.authenticate.bind(_passport2.default);
// Expose express request headers to Feathers services and hooks.
app.use(_express2.default.exposeHeaders());
if (options.cookie.enabled) {
// Expose express cookies to Feathers services and hooks.
debug('Setting up Express exposeCookie middleware');
app.use(_express2.default.exposeCookies());
}
// TODO (EK): Support passing your own service or force
// developer to register it themselves.
app.configure((0, _service2.default)(options));
app.passport.initialize();
app.setup = function () {
var result = _super.apply(this, arguments);
// Socket.io middleware
if (app.io) {
debug('registering Socket.io authentication middleware');
app.io.on('connection', _socket2.default.socketio(app, options));
}
// Primus middleware
if (app.primus) {
debug('registering Primus authentication middleware');
app.primus.on('connection', _socket2.default.primus(app, options));
}
return result;
};
};
}
// Exposed Modules
Object.assign(init, {
hooks: _hooks2.default,
express: _express2.default,
service: _service2.default
});
module.exports = exports['default'];