express-restify-mt-mongoose
Version:
Easily create a flexible REST interface for mongoose models
28 lines (23 loc) • 2.62 kB
JavaScript
module.exports = function (options) {
var errorHandler = require('../errorHandler')(options);
return function (req, res, next) {
var handler = function handler(err, access) {
if (err) {
return errorHandler(req, res, next)(err);
}
if (['public', 'private', 'protected'].indexOf(access) < 0) {
throw new Error('Unsupported access, must be "private", "protected" or "public"');
}
req.access = access;
next();
};
if (options.access.length > 1) {
options.access(req, handler);
} else {
handler(null, options.access(req));
}
};
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9taWRkbGV3YXJlL2FjY2Vzcy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sT0FBUCxHQUFpQixVQUFVLE9BQVYsRUFBbUI7QUFDbEMsTUFBTSxlQUFlLFFBQVEsaUJBQVIsRUFBMkIsT0FBM0IsQ0FBckI7O0FBRUEsU0FBTyxVQUFVLEdBQVYsRUFBZSxHQUFmLEVBQW9CLElBQXBCLEVBQTBCO0FBQy9CLFFBQU0sVUFBVSxTQUFWLE9BQVUsQ0FBVSxHQUFWLEVBQWUsTUFBZixFQUF1QjtBQUNyQyxVQUFJLEdBQUosRUFBUztBQUNQLGVBQU8sYUFBYSxHQUFiLEVBQWtCLEdBQWxCLEVBQXVCLElBQXZCLEVBQTZCLEdBQTdCLENBQVA7QUFDRDs7QUFFRCxVQUFJLENBQUMsUUFBRCxFQUFXLFNBQVgsRUFBc0IsV0FBdEIsRUFBbUMsT0FBbkMsQ0FBMkMsTUFBM0MsSUFBcUQsQ0FBekQsRUFBNEQ7QUFDMUQsY0FBTSxJQUFJLEtBQUosQ0FBVSxnRUFBVixDQUFOO0FBQ0Q7O0FBRUQsVUFBSSxNQUFKLEdBQWEsTUFBYjtBQUNBO0FBQ0QsS0FYRDs7QUFhQSxRQUFJLFFBQVEsTUFBUixDQUFlLE1BQWYsR0FBd0IsQ0FBNUIsRUFBK0I7QUFDN0IsY0FBUSxNQUFSLENBQWUsR0FBZixFQUFvQixPQUFwQjtBQUNELEtBRkQsTUFFTztBQUNMLGNBQVEsSUFBUixFQUFjLFFBQVEsTUFBUixDQUFlLEdBQWYsQ0FBZDtBQUNEO0FBQ0YsR0FuQkQ7QUFvQkQsQ0F2QkQiLCJmaWxlIjoiYWNjZXNzLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob3B0aW9ucykge1xyXG4gIGNvbnN0IGVycm9ySGFuZGxlciA9IHJlcXVpcmUoJy4uL2Vycm9ySGFuZGxlcicpKG9wdGlvbnMpXHJcblxyXG4gIHJldHVybiBmdW5jdGlvbiAocmVxLCByZXMsIG5leHQpIHtcclxuICAgIGNvbnN0IGhhbmRsZXIgPSBmdW5jdGlvbiAoZXJyLCBhY2Nlc3MpIHtcclxuICAgICAgaWYgKGVycikge1xyXG4gICAgICAgIHJldHVybiBlcnJvckhhbmRsZXIocmVxLCByZXMsIG5leHQpKGVycilcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKFsncHVibGljJywgJ3ByaXZhdGUnLCAncHJvdGVjdGVkJ10uaW5kZXhPZihhY2Nlc3MpIDwgMCkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgYWNjZXNzLCBtdXN0IGJlIFwicHJpdmF0ZVwiLCBcInByb3RlY3RlZFwiIG9yIFwicHVibGljXCInKVxyXG4gICAgICB9XHJcblxyXG4gICAgICByZXEuYWNjZXNzID0gYWNjZXNzXHJcbiAgICAgIG5leHQoKVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChvcHRpb25zLmFjY2Vzcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgIG9wdGlvbnMuYWNjZXNzKHJlcSwgaGFuZGxlcilcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGhhbmRsZXIobnVsbCwgb3B0aW9ucy5hY2Nlc3MocmVxKSlcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
//# sourceMappingURL=access.js.map
;