mirror of
https://github.com/caprover/caprover
synced 2026-08-28 10:26:35 +00:00
Injector migration done
This commit is contained in:
@@ -1,16 +1,19 @@
|
||||
const DataStoreProvider = require('../datastore/DataStoreProvider');
|
||||
const Authenticator = require('../user/Authenticator');
|
||||
const CaptainConstants = require('../utils/CaptainConstants');
|
||||
const CaptainManager = require('../user/CaptainManager');
|
||||
const ServiceManager = require('../user/ServiceManager');
|
||||
const dockerApi = require('../docker/DockerApi').get();
|
||||
const BaseApi = require('../api/BaseApi');
|
||||
const Logger = require('../utils/Logger');
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const DataStoreProvider = require("../datastore/DataStoreProvider");
|
||||
const Authenticator = require("../user/Authenticator");
|
||||
const CaptainConstants = require("../utils/CaptainConstants");
|
||||
const CaptainManager = require("../user/CaptainManager");
|
||||
const ServiceManager = require("../user/ServiceManager");
|
||||
const DockerApiProvider = require("../docker/DockerApi");
|
||||
const BaseApi = require("../api/BaseApi");
|
||||
const Logger = require("../utils/Logger");
|
||||
const dockerApi = DockerApiProvider.get();
|
||||
const serviceMangerCache = {};
|
||||
/**
|
||||
* Global dependency injection module
|
||||
*/
|
||||
module.exports.injectGlobal = function (req, res) {
|
||||
module.exports.injectGlobal = function () {
|
||||
return function (req, res, next) {
|
||||
const locals = res.locals;
|
||||
locals.initialized = CaptainManager.get().isInitialized();
|
||||
@@ -30,8 +33,9 @@ module.exports.injectUser = function () {
|
||||
}
|
||||
const namespace = res.locals.namespace;
|
||||
Authenticator.get(namespace)
|
||||
.decodeAuthToken(req.header(CaptainConstants.header.auth))
|
||||
.then(function (user) {
|
||||
.decodeAuthToken(req.header(CaptainConstants.header.auth) || "")
|
||||
.then(function (userDecoded) {
|
||||
const user = userDecoded;
|
||||
if (user) {
|
||||
user.dataStore = DataStoreProvider.getDataStore(namespace);
|
||||
if (!serviceMangerCache[user.namespace]) {
|
||||
@@ -49,7 +53,7 @@ module.exports.injectUser = function () {
|
||||
return;
|
||||
}
|
||||
Logger.e(error);
|
||||
res.locals.user = null;
|
||||
res.locals.user = undefined;
|
||||
next();
|
||||
});
|
||||
};
|
||||
@@ -59,28 +63,28 @@ module.exports.injectUser = function () {
|
||||
*/
|
||||
module.exports.injectUserForWebhook = function () {
|
||||
return function (req, res, next) {
|
||||
let token = req.query.token;
|
||||
let namespace = req.query.namespace;
|
||||
let app = null;
|
||||
const token = req.query.token;
|
||||
const namespace = req.query.namespace;
|
||||
let app = undefined;
|
||||
if (!token || !namespace) {
|
||||
Logger.e('Trigger build is called with no token/namespace');
|
||||
Logger.e("Trigger build is called with no token/namespace");
|
||||
next();
|
||||
return;
|
||||
}
|
||||
let dataStore = DataStoreProvider.getDataStore(namespace);
|
||||
let decodedInfo = null;
|
||||
const dataStore = DataStoreProvider.getDataStore(namespace);
|
||||
let decodedInfo;
|
||||
Authenticator.get(namespace).decodeAppPushWebhookToken(token)
|
||||
.then(function (data) {
|
||||
decodedInfo = data;
|
||||
return dataStore.getAppsDataStore()
|
||||
.getAppDefinition(data.appName);
|
||||
.getAppDefinition(decodedInfo.appName);
|
||||
})
|
||||
.then(function (appFound) {
|
||||
app = appFound;
|
||||
if (app.appPushWebhook.tokenVersion !== decodedInfo.tokenVersion) {
|
||||
throw new Error('Token Info do not match');
|
||||
throw new Error("Token Info do not match");
|
||||
}
|
||||
let user = {
|
||||
const user = {
|
||||
namespace: namespace
|
||||
};
|
||||
user.dataStore = DataStoreProvider.getDataStore(namespace);
|
||||
@@ -96,7 +100,7 @@ module.exports.injectUserForWebhook = function () {
|
||||
})
|
||||
.catch(function (error) {
|
||||
Logger.e(error);
|
||||
res.locals.app = null;
|
||||
res.locals.app = undefined;
|
||||
next();
|
||||
});
|
||||
};
|
||||
@@ -119,7 +123,7 @@ module.exports.injectUserUsingCookieDataOnly = function () {
|
||||
return;
|
||||
}
|
||||
Logger.e(error);
|
||||
res.locals.user = null;
|
||||
res.locals.user = undefined;
|
||||
next();
|
||||
});
|
||||
};
|
||||
|
||||
@@ -1 +1 @@
|
||||
{"version":3,"file":"Injector.js","sourceRoot":"","sources":["../../src/injection/Injector.js"],"names":[],"mappings":"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"}
|
||||
{"version":3,"file":"Injector.js","sourceRoot":"","sources":["../../src/injection/Injector.ts"],"names":[],"mappings":";;AAAA,oEAAqE;AACrE,uDAAwD;AACxD,8DAA+D;AAC/D,yDAA0D;AAC1D,yDAA0D;AAC1D,yDAA0D;AAC1D,0CAA2C;AAE3C,0CAA2C;AAI3C,MAAM,SAAS,GAAI,iBAAiB,CAAC,GAAG,EAAE,CAAC;AAE3C,MAAM,kBAAkB,GAAG,EAAmC,CAAC;AAE/D;;GAEG;AACH,MAAM,CAAC,OAAO,CAAC,YAAY,GAAG;IAE1B,OAAO,UAAU,GAAY,EAAE,GAAa,EAAE,IAAkB;QAE5D,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QAE1B,MAAM,CAAC,WAAW,GAAG,cAAc,CAAC,GAAG,EAAE,CAAC,aAAa,EAAE,CAAC;QAC1D,MAAM,CAAC,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACjE,MAAM,CAAC,QAAQ,GAAG,cAAc,CAAC,GAAG,EAAE,CAAC,gBAAgB,EAAE,CAAC;QAE1D,IAAI,EAAE,CAAC;IACX,CAAC,CAAC;AAEN,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,OAAO,CAAC,UAAU,GAAG;IAExB,OAAO,UAAU,GAAY,EAAE,GAAa,EAAE,IAAkB;QAE5D,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE;YACjB,IAAI,EAAE,CAAC;YACP,OAAO,CAAC,4CAA4C;SACvD;QAED,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC;QAEvC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC;aACvB,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;aAC/D,IAAI,CAAC,UAAU,WAA8B;YAEtC,MAAM,IAAI,GAAG,WAAqC,CAAG;YAEzD,IAAI,IAAI,EAAE;gBACN,IAAI,CAAC,SAAS,GAAG,iBAAiB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;gBAC3D,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;oBACrC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,cAAc,CAAC,GAAG,EAAE,CAAC,qBAAqB,EAAE,CAAC,CAAC;iBAC1H;gBACD,IAAI,CAAC,cAAc,GAAG,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACzD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;aAErD;YAED,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;YAEvB,IAAI,EAAE,CAAC;QACX,CAAC,CAAC;aACD,KAAK,CAAC,UAAU,KAAU;YACvB,IAAI,KAAK,IAAI,KAAK,CAAC,gBAAgB,EAAE;gBACjC,GAAG,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;gBAChE,OAAO;aACV;YACD,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAChB,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC;YAC5B,IAAI,EAAE,CAAC;QACX,CAAC,CAAC,CAAC;IAEX,CAAC,CAAC;AACN,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,OAAO,CAAC,oBAAoB,GAAG;IAElC,OAAO,UAAU,GAAY,EAAE,GAAa,EAAE,IAAkB;QAE5D,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;QAC9B,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC;QACtC,IAAI,GAAG,GAAG,SAAS,CAAC;QAEpB,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,EAAE;YACtB,MAAM,CAAC,CAAC,CAAC,iDAAiD,CAAC,CAAC;YAC5D,IAAI,EAAE,CAAC;YACP,OAAO;SACV;QAED,MAAM,SAAS,GAAG,iBAAiB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAE5D,IAAI,WAAuC,CAAC;QAE5C,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,yBAAyB,CAAC,KAAK,CAAC;aACxD,IAAI,CAAC,UAAU,IAAI;YAEhB,WAAW,GAAG,IAAkC,CAAC;YAEjD,OAAO,SAAS,CAAC,gBAAgB,EAAE;iBAC9B,gBAAgB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAE/C,CAAC,CAAC;aACD,IAAI,CAAC,UAAU,QAAQ;YAEpB,GAAG,GAAG,QAAQ,CAAC;YAEf,IAAI,GAAG,CAAC,cAAc,CAAC,YAAY,KAAK,WAAW,CAAC,YAAY,EAAE;gBAC9D,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;aAC9C;YAED,MAAM,IAAI,GAAG;gBACT,SAAS,EAAE,SAAS;aACG,CAAC;YAE5B,IAAI,CAAC,SAAS,GAAG,iBAAiB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAC3D,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;gBACrC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,cAAc,CAAC,GAAG,EAAE,CAAC,qBAAqB,EAAE,CAAC,CAAC;aAC1H;YACD,IAAI,CAAC,cAAc,GAAG,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACzD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;YAElD,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;YACvB,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;YACrB,GAAG,CAAC,MAAM,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;YAEzC,IAAI,EAAE,CAAC;QAEX,CAAC,CAAC;aACD,KAAK,CAAC,UAAU,KAAK;YAClB,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAChB,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,SAAS,CAAC;YAC3B,IAAI,EAAE,CAAC;QACX,CAAC,CAAC,CAAC;IAEX,CAAC,CAAC;AACN,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,OAAO,CAAC,6BAA6B,GAAG;IAE3C,OAAO,UAAU,GAAY,EAAE,GAAa,EAAE,IAAkB;QAE5D,aAAa,CAAC,GAAG,CAAC,gBAAgB,CAAC,aAAa,CAAC;aAC5C,0BAA0B,CAAC,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;aAC3E,IAAI,CAAC,UAAU,IAAI;YAEhB,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;YAEvB,IAAI,EAAE,CAAC;QACX,CAAC,CAAC;aACD,KAAK,CAAC,UAAU,KAAK;YAClB,IAAI,KAAK,IAAI,KAAK,CAAC,gBAAgB,EAAE;gBACjC,GAAG,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;gBAChE,OAAO;aACV;YACD,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAChB,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC;YAC5B,IAAI,EAAE,CAAC;QACX,CAAC,CAAC,CAAC;IACX,CAAC,CAAC;AACN,CAAC,CAAC"}
|
||||
@@ -0,0 +1 @@
|
||||
//# sourceMappingURL=ICacheGeneric.js.map
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"ICacheGeneric.js","sourceRoot":"","sources":["../../src/models/ICacheGeneric.ts"],"names":[],"mappings":""}
|
||||
@@ -0,0 +1,3 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
//# sourceMappingURL=InjectionInterfaces.js.map
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"InjectionInterfaces.js","sourceRoot":"","sources":["../../src/models/InjectionInterfaces.ts"],"names":[],"mappings":""}
|
||||
File diff suppressed because one or more lines are too long
@@ -1,5 +1,4 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const CaptainConstants = require("../utils/CaptainConstants");
|
||||
const Logger = require("../utils/Logger");
|
||||
const fs = require("fs-extra");
|
||||
|
||||
File diff suppressed because one or more lines are too long
Generated
+56
@@ -42,6 +42,15 @@
|
||||
"resolved": "https://registry.npmjs.org/@types/bcryptjs/-/bcryptjs-2.4.2.tgz",
|
||||
"integrity": "sha512-LiMQ6EOPob/4yUL66SZzu6Yh77cbzJFYll+ZfaPiPPFswtIlA/Fs1MzdKYA7JApHU49zQTbJGX3PDmCpIdDBRQ=="
|
||||
},
|
||||
"@types/body-parser": {
|
||||
"version": "1.17.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.17.0.tgz",
|
||||
"integrity": "sha512-a2+YeUjPkztKJu5aIF2yArYFQQp8d51wZ7DavSHjFuY1mqVgidGyzEQ41JIVNy82fXj8yPgy2vJmfIywgESW6w==",
|
||||
"requires": {
|
||||
"@types/connect": "*",
|
||||
"@types/node": "*"
|
||||
}
|
||||
},
|
||||
"@types/caseless": {
|
||||
"version": "0.12.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.1.tgz",
|
||||
@@ -52,6 +61,14 @@
|
||||
"resolved": "https://registry.npmjs.org/@types/configstore/-/configstore-2.1.1.tgz",
|
||||
"integrity": "sha1-zR6FU2M60xhcPy8jns/10mQ+krY="
|
||||
},
|
||||
"@types/connect": {
|
||||
"version": "3.4.32",
|
||||
"resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.32.tgz",
|
||||
"integrity": "sha512-4r8qa0quOvh7lGD0pre62CAb1oni1OO6ecJLGCezTmhQ8Fz50Arx9RUszryR8KlgK6avuSXvviL6yWyViQABOg==",
|
||||
"requires": {
|
||||
"@types/node": "*"
|
||||
}
|
||||
},
|
||||
"@types/ejs": {
|
||||
"version": "2.6.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/ejs/-/ejs-2.6.0.tgz",
|
||||
@@ -62,6 +79,26 @@
|
||||
"resolved": "http://registry.npmjs.org/@types/events/-/events-1.2.0.tgz",
|
||||
"integrity": "sha512-KEIlhXnIutzKwRbQkGWb/I4HFqBuUykAdHgDED6xqwXJfONCjF5VoE0cXEiurh3XauygxzeDzgtXUqvLkxFzzA=="
|
||||
},
|
||||
"@types/express": {
|
||||
"version": "4.16.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/express/-/express-4.16.0.tgz",
|
||||
"integrity": "sha512-TtPEYumsmSTtTetAPXlJVf3kEqb6wZK0bZojpJQrnD/djV4q1oB6QQ8aKvKqwNPACoe02GNiy5zDzcYivR5Z2w==",
|
||||
"requires": {
|
||||
"@types/body-parser": "*",
|
||||
"@types/express-serve-static-core": "*",
|
||||
"@types/serve-static": "*"
|
||||
}
|
||||
},
|
||||
"@types/express-serve-static-core": {
|
||||
"version": "4.16.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.16.0.tgz",
|
||||
"integrity": "sha512-lTeoCu5NxJU4OD9moCgm0ESZzweAx0YqsAcab6OB0EB3+As1OaHtKnaGJvcngQxYsi9UNv0abn4/DRavrRxt4w==",
|
||||
"requires": {
|
||||
"@types/events": "*",
|
||||
"@types/node": "*",
|
||||
"@types/range-parser": "*"
|
||||
}
|
||||
},
|
||||
"@types/form-data": {
|
||||
"version": "2.2.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-2.2.1.tgz",
|
||||
@@ -86,11 +123,21 @@
|
||||
"@types/node": "*"
|
||||
}
|
||||
},
|
||||
"@types/mime": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.0.tgz",
|
||||
"integrity": "sha512-A2TAGbTFdBw9azHbpVd+/FkdW2T6msN1uct1O9bH3vTerEHKZhTXJUQXy+hNq1B0RagfU8U+KBdqiZpxjhOUQA=="
|
||||
},
|
||||
"@types/node": {
|
||||
"version": "10.12.9",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.9.tgz",
|
||||
"integrity": "sha512-eajkMXG812/w3w4a1OcBlaTwsFPO5F7fJ/amy+tieQxEMWBlbV1JGSjkFM+zkHNf81Cad+dfIRA+IBkvmvdAeA=="
|
||||
},
|
||||
"@types/range-parser": {
|
||||
"version": "1.2.2",
|
||||
"resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.2.tgz",
|
||||
"integrity": "sha512-HtKGu+qG1NPvYe1z7ezLsyIaXYyi8SoAVqWDZgDQ8dLrsZvSzUNCwZyfX33uhWxL/SU0ZDQZ3nwZ0nimt507Kw=="
|
||||
},
|
||||
"@types/request": {
|
||||
"version": "2.48.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.1.tgz",
|
||||
@@ -107,6 +154,15 @@
|
||||
"resolved": "https://registry.npmjs.org/@types/require-from-string/-/require-from-string-1.2.0.tgz",
|
||||
"integrity": "sha512-5vE9WoOOC9/DoD3Zj53UISpM+5tSvh8k0mL4fe2zFI6vO715/W4IQ3EdVUrWVMrFi1/NZhyMvm2iKsDFkEGddQ=="
|
||||
},
|
||||
"@types/serve-static": {
|
||||
"version": "1.13.2",
|
||||
"resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.2.tgz",
|
||||
"integrity": "sha512-/BZ4QRLpH/bNYgZgwhKEh+5AsboDBcUdlBYgzoLX0fpj3Y2gp6EApyOlM3bK53wQS/OE1SrdSYBAbux2D1528Q==",
|
||||
"requires": {
|
||||
"@types/express-serve-static-core": "*",
|
||||
"@types/mime": "*"
|
||||
}
|
||||
},
|
||||
"@types/ssh2": {
|
||||
"version": "0.5.36",
|
||||
"resolved": "https://registry.npmjs.org/@types/ssh2/-/ssh2-0.5.36.tgz",
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
"@types/bcryptjs": "^2.4.2",
|
||||
"@types/configstore": "^2.1.1",
|
||||
"@types/ejs": "^2.6.0",
|
||||
"@types/express": "^4.16.0",
|
||||
"@types/fs-extra": "^5.0.4",
|
||||
"@types/jsonwebtoken": "^8.3.0",
|
||||
"@types/request": "^2.48.1",
|
||||
|
||||
@@ -1,20 +1,25 @@
|
||||
const DataStoreProvider = require('../datastore/DataStoreProvider');
|
||||
const Authenticator = require('../user/Authenticator');
|
||||
const CaptainConstants = require('../utils/CaptainConstants');
|
||||
const CaptainManager = require('../user/CaptainManager');
|
||||
const ServiceManager = require('../user/ServiceManager');
|
||||
const dockerApi = require('../docker/DockerApi').get();
|
||||
const BaseApi = require('../api/BaseApi');
|
||||
const Logger = require('../utils/Logger');
|
||||
import DataStoreProvider = require("../datastore/DataStoreProvider");
|
||||
import Authenticator = require("../user/Authenticator");
|
||||
import CaptainConstants = require("../utils/CaptainConstants");
|
||||
import CaptainManager = require("../user/CaptainManager");
|
||||
import ServiceManager = require("../user/ServiceManager");
|
||||
import DockerApiProvider = require("../docker/DockerApi");
|
||||
import BaseApi = require("../api/BaseApi");
|
||||
import UserModel = require("../models/InjectionInterfaces");
|
||||
import Logger = require("../utils/Logger");
|
||||
import { NextFunction } from "connect";
|
||||
import { Response, Request } from "express";
|
||||
import requireFromString = require("require-from-string");
|
||||
const dockerApi = DockerApiProvider.get();
|
||||
|
||||
const serviceMangerCache = {};
|
||||
const serviceMangerCache = {} as ICacheGeneric<ServiceManager>;
|
||||
|
||||
/**
|
||||
* Global dependency injection module
|
||||
*/
|
||||
module.exports.injectGlobal = function (req, res) {
|
||||
module.exports.injectGlobal = function () {
|
||||
|
||||
return function (req, res, next) {
|
||||
return function (req: Request, res: Response, next: NextFunction) {
|
||||
|
||||
const locals = res.locals;
|
||||
|
||||
@@ -23,7 +28,7 @@ module.exports.injectGlobal = function (req, res) {
|
||||
locals.forceSsl = CaptainManager.get().getForceSslValue();
|
||||
|
||||
next();
|
||||
}
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
@@ -32,7 +37,7 @@ module.exports.injectGlobal = function (req, res) {
|
||||
*/
|
||||
module.exports.injectUser = function () {
|
||||
|
||||
return function (req, res, next) {
|
||||
return function (req: Request, res: Response, next: NextFunction) {
|
||||
|
||||
if (res.locals.user) {
|
||||
next();
|
||||
@@ -42,8 +47,11 @@ module.exports.injectUser = function () {
|
||||
const namespace = res.locals.namespace;
|
||||
|
||||
Authenticator.get(namespace)
|
||||
.decodeAuthToken(req.header(CaptainConstants.header.auth))
|
||||
.then(function (user) {
|
||||
.decodeAuthToken(req.header(CaptainConstants.header.auth) || "")
|
||||
.then(function (userDecoded: UserModel.UserJwt) {
|
||||
|
||||
const user = userDecoded as UserModel.UserInjected ;
|
||||
|
||||
if (user) {
|
||||
user.dataStore = DataStoreProvider.getDataStore(namespace);
|
||||
if (!serviceMangerCache[user.namespace]) {
|
||||
@@ -58,17 +66,17 @@ module.exports.injectUser = function () {
|
||||
|
||||
next();
|
||||
})
|
||||
.catch(function (error) {
|
||||
.catch(function (error: any) {
|
||||
if (error && error.captainErrorType) {
|
||||
res.send(new BaseApi(error.captainErrorType, error.apiMessage));
|
||||
return;
|
||||
}
|
||||
Logger.e(error);
|
||||
res.locals.user = null;
|
||||
res.locals.user = undefined;
|
||||
next();
|
||||
});
|
||||
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -76,29 +84,29 @@ module.exports.injectUser = function () {
|
||||
*/
|
||||
module.exports.injectUserForWebhook = function () {
|
||||
|
||||
return function (req, res, next) {
|
||||
return function (req: Request, res: Response, next: NextFunction) {
|
||||
|
||||
let token = req.query.token;
|
||||
let namespace = req.query.namespace;
|
||||
let app = null;
|
||||
const token = req.query.token;
|
||||
const namespace = req.query.namespace;
|
||||
let app = undefined;
|
||||
|
||||
if (!token || !namespace) {
|
||||
Logger.e('Trigger build is called with no token/namespace');
|
||||
Logger.e("Trigger build is called with no token/namespace");
|
||||
next();
|
||||
return;
|
||||
}
|
||||
|
||||
let dataStore = DataStoreProvider.getDataStore(namespace);
|
||||
const dataStore = DataStoreProvider.getDataStore(namespace);
|
||||
|
||||
let decodedInfo = null;
|
||||
let decodedInfo: UserModel.IAppWebHookToken;
|
||||
|
||||
Authenticator.get(namespace).decodeAppPushWebhookToken(token)
|
||||
.then(function (data) {
|
||||
|
||||
decodedInfo = data;
|
||||
decodedInfo = data as UserModel.IAppWebHookToken;
|
||||
|
||||
return dataStore.getAppsDataStore()
|
||||
.getAppDefinition(data.appName)
|
||||
.getAppDefinition(decodedInfo.appName);
|
||||
|
||||
})
|
||||
.then(function (appFound) {
|
||||
@@ -106,12 +114,13 @@ module.exports.injectUserForWebhook = function () {
|
||||
app = appFound;
|
||||
|
||||
if (app.appPushWebhook.tokenVersion !== decodedInfo.tokenVersion) {
|
||||
throw new Error('Token Info do not match');
|
||||
throw new Error("Token Info do not match");
|
||||
}
|
||||
|
||||
let user = {
|
||||
const user = {
|
||||
namespace: namespace
|
||||
};
|
||||
} as UserModel.UserInjected;
|
||||
|
||||
user.dataStore = DataStoreProvider.getDataStore(namespace);
|
||||
if (!serviceMangerCache[user.namespace]) {
|
||||
serviceMangerCache[user.namespace] = new ServiceManager(user, dockerApi, CaptainManager.get().getLoadBalanceManager());
|
||||
@@ -128,11 +137,11 @@ module.exports.injectUserForWebhook = function () {
|
||||
})
|
||||
.catch(function (error) {
|
||||
Logger.e(error);
|
||||
res.locals.app = null;
|
||||
res.locals.app = undefined;
|
||||
next();
|
||||
});
|
||||
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -141,7 +150,7 @@ module.exports.injectUserForWebhook = function () {
|
||||
*/
|
||||
module.exports.injectUserUsingCookieDataOnly = function () {
|
||||
|
||||
return function (req, res, next) {
|
||||
return function (req: Request, res: Response, next: NextFunction) {
|
||||
|
||||
Authenticator.get(CaptainConstants.rootNameSpace)
|
||||
.decodeAuthTokenFromCookies(req.cookies[CaptainConstants.header.cookieAuth])
|
||||
@@ -157,8 +166,8 @@ module.exports.injectUserUsingCookieDataOnly = function () {
|
||||
return;
|
||||
}
|
||||
Logger.e(error);
|
||||
res.locals.user = null;
|
||||
res.locals.user = undefined;
|
||||
next();
|
||||
});
|
||||
}
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,3 @@
|
||||
interface ICacheGeneric< T > {
|
||||
[id: string]: T;
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
import DataStore = require("../datastore/DataStoreImpl");
|
||||
import ServiceManager = require("../user/ServiceManager");
|
||||
|
||||
export interface UserJwt {
|
||||
namespace: string;
|
||||
tokenVersion: string|undefined;
|
||||
}
|
||||
|
||||
|
||||
export interface UserInjected extends UserJwt {
|
||||
dataStore: DataStore;
|
||||
serviceManager: ServiceManager;
|
||||
|
||||
initialized: boolean;
|
||||
}
|
||||
|
||||
|
||||
export interface IAppWebHookToken {
|
||||
appName: string;
|
||||
tokenVersion: string;
|
||||
}
|
||||
@@ -9,6 +9,7 @@ import CaptainManager = require("./CaptainManager");
|
||||
import CaptainConstants = require("../utils/CaptainConstants");
|
||||
import Logger = require("../utils/Logger");
|
||||
import DataStoreProvider = require("../datastore/DataStoreProvider");
|
||||
import { UserJwt } from "../models/InjectionInterfaces";
|
||||
|
||||
const captainDefaultPassword = EnvVar.DEFAULT_PASSWORD || "captain42";
|
||||
|
||||
@@ -103,7 +104,7 @@ class Authenticator {
|
||||
);
|
||||
}
|
||||
|
||||
const userObj = {
|
||||
const userObj: UserJwt = {
|
||||
namespace: self.namespace,
|
||||
tokenVersion: self.tokenVersion,
|
||||
};
|
||||
@@ -122,7 +123,7 @@ class Authenticator {
|
||||
return this.decodeAuthToken(token, COOKIE_AUTH_SUFFIX);
|
||||
}
|
||||
|
||||
decodeAuthToken(token: string, keySuffix: string) {
|
||||
decodeAuthToken(token: string, keySuffix?: string) {
|
||||
const self = this;
|
||||
|
||||
return new Promise(function(resolve, reject) {
|
||||
|
||||
@@ -1015,4 +1015,4 @@ class ServiceManager {
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = ServiceManager;
|
||||
export = ServiceManager;
|
||||
Reference in New Issue
Block a user