forked from Pythagora-io/pythagora
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathexpress.js
31 lines (27 loc) · 1.11 KB
/
express.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
const originalExpress = require('express');
const { setUpExpressMiddlewares } = require('../helpers/middlewares');
pythagoraExpress = function () {
const app = originalExpress.apply(this, arguments);
const originalListen = app.listen;
const originalUse = app.use;
app.listen = function () {
app.isPythagoraExpressInstance = true;
return originalListen.apply(this, arguments);
}
app.use = function() {
if (!global.Pythagora || !global.Pythagora.authenticationMiddleware) return originalUse.apply(this, arguments);
let originalMiddleware = arguments[0];
arguments[0] = async function() {
global.Pythagora.authenticationInProcess = true;
let res = await originalMiddleware.apply(this, arguments);
global.Pythagora.authenticationInProcess = false;
return res;
};
global.Pythagora.authenticationMiddleware = false;
return originalUse.apply(this, arguments);
}
setUpExpressMiddlewares(app);
return app;
}
Object.assign(pythagoraExpress, originalExpress);
module.exports = pythagoraExpress;