-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathmiddlewareCreator.js
62 lines (52 loc) · 1.78 KB
/
middlewareCreator.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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
'use strict';
var moesifExpress = require('moesif-express');
var safeGet = require('lodash/get');
module.exports = function(pluginContext) {
var applicationId = safeGet(pluginContext, 'settings.applicationId');
var debug = safeGet(pluginContext, 'settings.debug');
var tokenHeader = safeGet(pluginContext, 'settings.sessionTokenHeader');
if (debug) {
console.log('debug mode is on');
console.log('got application Id back from pluginContext: ' + applicationId);
console.log('tokenHeader ' + tokenHeader);
}
if (!applicationId) {
throw new Error('moesif plugin requires applicationId to be defined');
}
function identifyUser(req, res) {
// Express Gateway will add the eg-consumer-id header to
// the proxied requests based on the authenticated user. In
// case there’s none, its value will be anonymous.
if (debug) {
console.log('identify user triggered');
}
var userId = safeGet(req, 'headers.eg-consumer-id');
if (debug) {
console.log(JSON.stringify(req.headers));
console.log('userid is ' + userId);
}
return userId;
}
var getSessionToken;
if (tokenHeader) {
getSessionToken = function(req, res) {
if (debug) {
console.log('getSessionToken is triggered');
}
var headers = safeGet(req, 'headers');
if (!headers) return null;
var obtainedToken = headers[tokenHeader] || headers[tokenHeader.toLowerCase()] || headers['authorization'] || headers['Authorization'];
if (debug) {
console.log('obtained token ' + obtainedToken);
}
return obtainedToken;
}
}
var moesifMiddleware = moesifExpress({
applicationId: applicationId,
debug: debug,
identifyUser: identifyUser,
getSessionToken: getSessionToken
});
return moesifMiddleware;
};