From 7ff7b0c2d1761518e07aa46476d4fe810ae8f772 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Aubert?= Date: Thu, 15 Mar 2018 19:38:11 +0100 Subject: [PATCH] Extract rest of the middlewares from prepare contex --- lib/cartodb/controllers/analyses.js | 12 +++- lib/cartodb/controllers/layergroup.js | 63 ++++++++++++++----- lib/cartodb/controllers/map.js | 12 +++- lib/cartodb/controllers/named_maps.js | 17 +++-- lib/cartodb/controllers/named_maps_admin.js | 4 +- .../{context => }/clean-up-query-params.js | 0 lib/cartodb/middleware/context/index.js | 13 ---- .../middleware/{context => }/credentials.js | 0 .../{context => }/layergroup-token.js | 2 +- .../middleware/{context => }/locals.js | 0 lib/cartodb/server.js | 11 +--- test/unit/cartodb/prepare-context.test.js | 6 +- 12 files changed, 87 insertions(+), 53 deletions(-) rename lib/cartodb/middleware/{context => }/clean-up-query-params.js (100%) delete mode 100644 lib/cartodb/middleware/context/index.js rename lib/cartodb/middleware/{context => }/credentials.js (100%) rename lib/cartodb/middleware/{context => }/layergroup-token.js (93%) rename lib/cartodb/middleware/{context => }/locals.js (100%) diff --git a/lib/cartodb/controllers/analyses.js b/lib/cartodb/controllers/analyses.js index 99c38fcb..1d97c9ee 100644 --- a/lib/cartodb/controllers/analyses.js +++ b/lib/cartodb/controllers/analyses.js @@ -1,11 +1,14 @@ var PSQL = require('cartodb-psql'); var cors = require('../middleware/cors'); var userMiddleware = require('../middleware/user'); +const locals = require('../middleware/locals'); +const cleanUpQueryParams = require('../middleware/clean-up-query-params'); +const layergroupToken = require('../middleware/layergroup-token'); +const credentials = require('../middleware/credentials'); const authorize = require('../middleware/authorize'); const dbConnSetup = require('../middleware/db-conn-setup'); -function AnalysesController(prepareContext, pgConnection, authApi) { - this.prepareContext = prepareContext; +function AnalysesController(pgConnection, authApi) { this.pgConnection = pgConnection; this.authApi = authApi; } @@ -17,7 +20,10 @@ AnalysesController.prototype.register = function (app) { `${app.base_url_mapconfig}/analyses/catalog`, cors(), userMiddleware(), - this.prepareContext, + locals(), + cleanUpQueryParams(), + layergroupToken(), + credentials(), authorize(this.authApi), dbConnSetup(this.pgConnection), createPGClient(), diff --git a/lib/cartodb/controllers/layergroup.js b/lib/cartodb/controllers/layergroup.js index 834bb0b7..06aa4ac8 100644 --- a/lib/cartodb/controllers/layergroup.js +++ b/lib/cartodb/controllers/layergroup.js @@ -2,6 +2,10 @@ const cors = require('../middleware/cors'); const userMiddleware = require('../middleware/user'); const allowQueryParams = require('../middleware/allow-query-params'); const vectorError = require('../middleware/vector-error'); +const locals = require('../middleware/locals'); +const cleanUpQueryParams = require('../middleware/clean-up-query-params'); +const layergroupToken = require('../middleware/layergroup-token'); +const credentials = require('../middleware/credentials'); const dbConnSetup = require('../middleware/db-conn-setup'); const authorize = require('../middleware/authorize'); const DataviewBackend = require('../backends/dataview'); @@ -30,7 +34,7 @@ const SUPPORTED_FORMATS = { * @param {AnalysisBackend} analysisBackend * @constructor */ -function LayergroupController(prepareContext, pgConnection, mapStore, tileBackend, previewBackend, attributesBackend, +function LayergroupController(pgConnection, mapStore, tileBackend, previewBackend, attributesBackend, surrogateKeysCache, userLimitsApi, layergroupAffectedTables, analysisBackend, authApi) { this.pgConnection = pgConnection; this.mapStore = mapStore; @@ -43,8 +47,6 @@ function LayergroupController(prepareContext, pgConnection, mapStore, tileBacken this.dataviewBackend = new DataviewBackend(analysisBackend); this.analysisStatusBackend = new AnalysisStatusBackend(); - - this.prepareContext = prepareContext; this.authApi = authApi; } @@ -57,7 +59,10 @@ LayergroupController.prototype.register = function(app) { `${basePath}/:token/:z/:x/:y@:scale_factor?x.:format`, cors(), userMiddleware(), - this.prepareContext, + locals(), + cleanUpQueryParams(), + layergroupToken(), + credentials(), authorize(this.authApi), dbConnSetup(this.pgConnection), createMapStoreMapConfigProvider(this.mapStore, this.userLimitsApi), @@ -78,7 +83,10 @@ LayergroupController.prototype.register = function(app) { `${basePath}/:token/:z/:x/:y.:format`, cors(), userMiddleware(), - this.prepareContext, + locals(), + cleanUpQueryParams(), + layergroupToken(), + credentials(), authorize(this.authApi), dbConnSetup(this.pgConnection), createMapStoreMapConfigProvider(this.mapStore, this.userLimitsApi), @@ -100,7 +108,10 @@ LayergroupController.prototype.register = function(app) { distinguishLayergroupFromStaticRoute(), cors(), userMiddleware(), - this.prepareContext, + locals(), + cleanUpQueryParams(), + layergroupToken(), + credentials(), authorize(this.authApi), dbConnSetup(this.pgConnection), createMapStoreMapConfigProvider(this.mapStore, this.userLimitsApi), @@ -121,7 +132,10 @@ LayergroupController.prototype.register = function(app) { `${basePath}/:token/:layer/attributes/:fid`, cors(), userMiddleware(), - this.prepareContext, + locals(), + cleanUpQueryParams(), + layergroupToken(), + credentials(), authorize(this.authApi), dbConnSetup(this.pgConnection), createMapStoreMapConfigProvider(this.mapStore, this.userLimitsApi), @@ -141,7 +155,10 @@ LayergroupController.prototype.register = function(app) { cors(), userMiddleware(), allowQueryParams(['layer']), - this.prepareContext, + locals(), + cleanUpQueryParams(), + layergroupToken(), + credentials(), authorize(this.authApi), dbConnSetup(this.pgConnection), createMapStoreMapConfigProvider(this.mapStore, this.userLimitsApi, forcedFormat), @@ -159,7 +176,10 @@ LayergroupController.prototype.register = function(app) { cors(), userMiddleware(), allowQueryParams(['layer']), - this.prepareContext, + locals(), + cleanUpQueryParams(), + layergroupToken(), + credentials(), authorize(this.authApi), dbConnSetup(this.pgConnection), createMapStoreMapConfigProvider(this.mapStore, this.userLimitsApi, forcedFormat), @@ -195,7 +215,10 @@ LayergroupController.prototype.register = function(app) { cors(), userMiddleware(), allowQueryParams(allowedDataviewQueryParams), - this.prepareContext, + locals(), + cleanUpQueryParams(), + layergroupToken(), + credentials(), authorize(this.authApi), dbConnSetup(this.pgConnection), createMapStoreMapConfigProvider(this.mapStore, this.userLimitsApi), @@ -213,7 +236,10 @@ LayergroupController.prototype.register = function(app) { cors(), userMiddleware(), allowQueryParams(allowedDataviewQueryParams), - this.prepareContext, + locals(), + cleanUpQueryParams(), + layergroupToken(), + credentials(), authorize(this.authApi), dbConnSetup(this.pgConnection), createMapStoreMapConfigProvider(this.mapStore, this.userLimitsApi), @@ -231,7 +257,10 @@ LayergroupController.prototype.register = function(app) { cors(), userMiddleware(), allowQueryParams(allowedDataviewQueryParams), - this.prepareContext, + locals(), + cleanUpQueryParams(), + layergroupToken(), + credentials(), authorize(this.authApi), dbConnSetup(this.pgConnection), createMapStoreMapConfigProvider(this.mapStore, this.userLimitsApi), @@ -249,7 +278,10 @@ LayergroupController.prototype.register = function(app) { cors(), userMiddleware(), allowQueryParams(allowedDataviewQueryParams), - this.prepareContext, + locals(), + cleanUpQueryParams(), + layergroupToken(), + credentials(), authorize(this.authApi), dbConnSetup(this.pgConnection), createMapStoreMapConfigProvider(this.mapStore, this.userLimitsApi), @@ -266,7 +298,10 @@ LayergroupController.prototype.register = function(app) { `${basePath}/:token/analysis/node/:nodeId`, cors(), userMiddleware(), - this.prepareContext, + locals(), + cleanUpQueryParams(), + layergroupToken(), + credentials(), authorize(this.authApi), dbConnSetup(this.pgConnection), analysisNodeStatus(this.analysisStatusBackend), diff --git a/lib/cartodb/controllers/map.js b/lib/cartodb/controllers/map.js index 865b7361..5b8f22ca 100644 --- a/lib/cartodb/controllers/map.js +++ b/lib/cartodb/controllers/map.js @@ -7,6 +7,10 @@ const ResourceLocator = require('../models/resource-locator'); const cors = require('../middleware/cors'); const userMiddleware = require('../middleware/user'); const allowQueryParams = require('../middleware/allow-query-params'); +const locals = require('../middleware/locals'); +const cleanUpQueryParams = require('../middleware/clean-up-query-params'); +const layergroupToken = require('../middleware/layergroup-token'); +const credentials = require('../middleware/credentials'); const dbConnSetup = require('../middleware/db-conn-setup'); const authorize = require('../middleware/authorize'); const NamedMapsCacheEntry = require('../cache/model/named_maps_entry'); @@ -27,7 +31,7 @@ const LayergroupMetadata = require('../utils/layergroup-metadata'); * @param {StatsBackend} statsBackend * @constructor */ -function MapController(prepareContext, pgConnection, templateMaps, mapBackend, metadataBackend, +function MapController(pgConnection, templateMaps, mapBackend, metadataBackend, surrogateKeysCache, userLimitsApi, layergroupAffectedTables, mapConfigAdapter, statsBackend, authApi) { this.pgConnection = pgConnection; @@ -43,7 +47,6 @@ function MapController(prepareContext, pgConnection, templateMaps, mapBackend, m this.layergroupMetadata = new LayergroupMetadata(resourceLocator); this.statsBackend = statsBackend; - this.prepareContext = prepareContext; this.authApi = authApi; } @@ -71,7 +74,10 @@ MapController.prototype.composeCreateMapMiddleware = function (useTemplate = fal cors(), userMiddleware(), allowQueryParams(['aggregation']), - this.prepareContext, + locals(), + cleanUpQueryParams(), + layergroupToken(), + credentials(), authorize(this.authApi), dbConnSetup(this.pgConnection), initProfiler(isTemplateInstantiation), diff --git a/lib/cartodb/controllers/named_maps.js b/lib/cartodb/controllers/named_maps.js index 315a4097..2a1601f6 100644 --- a/lib/cartodb/controllers/named_maps.js +++ b/lib/cartodb/controllers/named_maps.js @@ -1,6 +1,10 @@ const NamedMapsCacheEntry = require('../cache/model/named_maps_entry'); const cors = require('../middleware/cors'); const userMiddleware = require('../middleware/user'); +const locals = require('../middleware/locals'); +const cleanUpQueryParams = require('../middleware/clean-up-query-params'); +const layergroupToken = require('../middleware/layergroup-token'); +const credentials = require('../middleware/credentials'); const dbConnSetup = require('../middleware/db-conn-setup'); const authorize = require('../middleware/authorize'); const allowQueryParams = require('../middleware/allow-query-params'); @@ -29,7 +33,7 @@ function getRequestParams(locals) { return params; } -function NamedMapsController(prepareContext, namedMapProviderCache, tileBackend, previewBackend, +function NamedMapsController(namedMapProviderCache, tileBackend, previewBackend, surrogateKeysCache, tablesExtentApi, metadataBackend, pgConnection, authApi) { this.namedMapProviderCache = namedMapProviderCache; this.tileBackend = tileBackend; @@ -37,7 +41,6 @@ function NamedMapsController(prepareContext, namedMapProviderCache, tileBackend, this.surrogateKeysCache = surrogateKeysCache; this.tablesExtentApi = tablesExtentApi; this.metadataBackend = metadataBackend; - this.prepareContext = prepareContext; this.pgConnection = pgConnection; this.authApi = authApi; } @@ -51,7 +54,10 @@ NamedMapsController.prototype.register = function(app) { `${base_url_templated}/:template_id/:layer/:z/:x/:y.(:format)`, cors(), userMiddleware(), - this.prepareContext, + locals(), + cleanUpQueryParams(), + layergroupToken(), + credentials(), authorize(this.authApi), dbConnSetup(this.pgConnection), getNamedMapProvider({ @@ -77,7 +83,10 @@ NamedMapsController.prototype.register = function(app) { cors(), userMiddleware(), allowQueryParams(['layer', 'zoom', 'lon', 'lat', 'bbox']), - this.prepareContext, + locals(), + cleanUpQueryParams(), + layergroupToken(), + credentials(), authorize(this.authApi), dbConnSetup(this.pgConnection), getNamedMapProvider({ diff --git a/lib/cartodb/controllers/named_maps_admin.js b/lib/cartodb/controllers/named_maps_admin.js index 986fef5c..536baf45 100644 --- a/lib/cartodb/controllers/named_maps_admin.js +++ b/lib/cartodb/controllers/named_maps_admin.js @@ -1,8 +1,8 @@ const { templateName } = require('../backends/template_maps'); const cors = require('../middleware/cors'); const userMiddleware = require('../middleware/user'); -const localsMiddleware = require('../middleware/context/locals'); -const credentialsMiddleware = require('../middleware/context/credentials'); +const localsMiddleware = require('../middleware/locals'); +const credentialsMiddleware = require('../middleware/credentials'); /** * @param {AuthApi} authApi diff --git a/lib/cartodb/middleware/context/clean-up-query-params.js b/lib/cartodb/middleware/clean-up-query-params.js similarity index 100% rename from lib/cartodb/middleware/context/clean-up-query-params.js rename to lib/cartodb/middleware/clean-up-query-params.js diff --git a/lib/cartodb/middleware/context/index.js b/lib/cartodb/middleware/context/index.js deleted file mode 100644 index 59a6095b..00000000 --- a/lib/cartodb/middleware/context/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const locals = require('./locals'); -const cleanUpQueryParams = require('./clean-up-query-params'); -const layergroupToken = require('./layergroup-token'); -const credentials = require('./credentials'); - -module.exports = function prepareContextMiddleware() { - return [ - locals(), - cleanUpQueryParams(), - layergroupToken(), - credentials(), - ]; -}; diff --git a/lib/cartodb/middleware/context/credentials.js b/lib/cartodb/middleware/credentials.js similarity index 100% rename from lib/cartodb/middleware/context/credentials.js rename to lib/cartodb/middleware/credentials.js diff --git a/lib/cartodb/middleware/context/layergroup-token.js b/lib/cartodb/middleware/layergroup-token.js similarity index 93% rename from lib/cartodb/middleware/context/layergroup-token.js rename to lib/cartodb/middleware/layergroup-token.js index c4aac23f..797b1b3d 100644 --- a/lib/cartodb/middleware/context/layergroup-token.js +++ b/lib/cartodb/middleware/layergroup-token.js @@ -1,4 +1,4 @@ -const LayergroupToken = require('../../models/layergroup-token'); +const LayergroupToken = require('../models/layergroup-token'); const authErrorMessageTemplate = function (signer, user) { return `Cannot use map signature of user "${signer}" on db of user "${user}"`; }; diff --git a/lib/cartodb/middleware/context/locals.js b/lib/cartodb/middleware/locals.js similarity index 100% rename from lib/cartodb/middleware/context/locals.js rename to lib/cartodb/middleware/locals.js diff --git a/lib/cartodb/server.js b/lib/cartodb/server.js index fbbc3c53..604c4342 100644 --- a/lib/cartodb/server.js +++ b/lib/cartodb/server.js @@ -49,8 +49,6 @@ var StatsBackend = require('./backends/stats'); const lzmaMiddleware = require('./middleware/lzma'); const errorMiddleware = require('./middleware/error-middleware'); -const prepareContextMiddleware = require('./middleware/context'); - module.exports = function(serverOptions) { // Make stats client globally accessible global.statsClient = StatsClient.getInstance(serverOptions.statsd); @@ -215,16 +213,11 @@ module.exports = function(serverOptions) { var versions = getAndValidateVersions(serverOptions); - const prepareContext = typeof serverOptions.req2params === 'function' ? - serverOptions.req2params : - prepareContextMiddleware(); - /******************************************************************************************************************* * Routing ******************************************************************************************************************/ new controller.Layergroup( - prepareContext, pgConnection, mapStore, tileBackend, @@ -238,7 +231,6 @@ module.exports = function(serverOptions) { ).register(app); new controller.Map( - prepareContext, pgConnection, templateMaps, mapBackend, @@ -252,7 +244,6 @@ module.exports = function(serverOptions) { ).register(app); new controller.NamedMaps( - prepareContext, namedMapProviderCache, tileBackend, previewBackend, @@ -265,7 +256,7 @@ module.exports = function(serverOptions) { new controller.NamedMapsAdmin(authApi, templateMaps).register(app); - new controller.Analyses(prepareContext, pgConnection, authApi).register(app); + new controller.Analyses(pgConnection, authApi).register(app); new controller.ServerInfo(versions).register(app); diff --git a/test/unit/cartodb/prepare-context.test.js b/test/unit/cartodb/prepare-context.test.js index ec38b954..f71bed2e 100644 --- a/test/unit/cartodb/prepare-context.test.js +++ b/test/unit/cartodb/prepare-context.test.js @@ -7,11 +7,11 @@ var PgConnection = require('../../../lib/cartodb/backends/pg_connection'); var AuthApi = require('../../../lib/cartodb/api/auth_api'); var TemplateMaps = require('../../../lib/cartodb/backends/template_maps'); -const cleanUpQueryParamsMiddleware = require('../../../lib/cartodb/middleware/context/clean-up-query-params'); +const cleanUpQueryParamsMiddleware = require('../../../lib/cartodb/middleware/clean-up-query-params'); const authorizeMiddleware = require('../../../lib/cartodb/middleware/authorize'); const dbConnSetupMiddleware = require('../../../lib/cartodb/middleware/db-conn-setup'); -const credentialsMiddleware = require('../../../lib/cartodb/middleware/context/credentials'); -const localsMiddleware = require('../../../lib/cartodb/middleware/context/locals'); +const credentialsMiddleware = require('../../../lib/cartodb/middleware/credentials'); +const localsMiddleware = require('../../../lib/cartodb/middleware/locals'); var windshaft = require('windshaft');