carcass-auth
Version:
(Node.js) Authentication middlewares, in Carcass style.
69 lines (53 loc) • 1.37 kB
JavaScript
var RedisStore, carcass, cookieParser, express, lib, session, validValue;
lib = require('../');
carcass = require('carcass');
express = require('express');
session = require('express-session');
RedisStore = require('connect-redis')(session);
cookieParser = require('cookie-parser');
validValue = carcass.object.validValue;
/**
* Session and cookie.
*
* Just an example.
*/
module.exports = function(options) {
var app, _ref;
validValue(options.name);
validValue(options.secret);
/**
* App.
*/
app = express();
/**
* Cookie parser.
*
* Usually useful but not required.
*/
/**
* HTTP bearer can be used to override session id from cookie. API requests
* will not have cookies so they need to provide session id in a different
* way.
*/
app.use(lib.middlewares.cookieBearer(options));
app.use(session({
name: options.name,
store: new RedisStore((_ref = options.redis) != null ? _ref : {}),
secret: options.secret,
cookie: {
path: '/',
httpOnly: false,
maxAge: null
}
}));
/**
* A shortcut to the encoded session id.
*/
app.use(lib.middlewares.encodeSID(options));
/**
* API requests will not have cookies so they need to retrieve session id in
* a different way.
*/
app.get('/session', lib.middlewares.sendSession(options));
return app;
};