UNPKG

silentjs

Version:
59 lines (46 loc) 1.72 kB
// VENDOR LIBS var express = require('express'); var lodash = require('lodash'); // FRAMEWORK var routerHelper = require('lib/router/router-helper'); var configuration = require('lib/configuration'); var Middleware = require('lib/middleware'); var Router = function () { this.protectedRouter = express.Router(); this.unprotectedRouter = express.Router(); this.middlewares = []; }; Router.prototype.initialize = function (controllersPath) { this.useMiddleware(require('lib/middlewares/logger')); this.useMiddleware(require('lib/middlewares/pre-processor')); this.useMiddleware(require('lib/middlewares/authentication'), 'protected'); lodash.each(this.middlewares, function (middleware) { this.useMiddleware(middleware.func, middleware.routerType); }.bind(this)); this.useMiddleware(require('lib/middlewares/post-processor')); routerHelper.createRoutes(this.getRouters(), controllersPath); }; Router.prototype.addMiddleware = function (middlewareFunc, routerType) { var middleware = { middleware: middlewareFunc, routerType: routerType }; this.middlewares.push(middleware); }; Router.prototype.useMiddleware = function (middleware, routerType) { var routers = this.getRouters(routerType); lodash.each(routers, function (router) { router.use(Middleware.bind(this, middleware)); }.bind(this)); }; Router.prototype.getRouters = function (type) { var routers = {}; if (type === 'protected' || !type) { routers.protected = this.protectedRouter; } if (type === 'unprotected' || !type) { routers.unprotected = this.unprotectedRouter; } return routers; }; module.exports = Router;