@lomray/microservice-gateway
Version:
Gateway microservice based on NodeJS & inverted json.
32 lines (28 loc) • 932 B
JavaScript
;
var microserviceHelpers = require('@lomray/microservice-helpers');
var _ = require('lodash');
var RequestIp = require('request-ip');
/**
* Collect and attach user info to headers
*/
const userInfo = ({ handleUserInfo } = {}) => (req, res, next) => {
const clientIp = RequestIp.getClientIp(req);
// parse user info
try {
const userInfoData = req.header('user-info');
if (userInfoData) {
const parsedInfo = JSON.parse(userInfoData);
_.set(req.headers, 'user-info', parsedInfo);
}
}
catch (e) {
microserviceHelpers.Log.error('Failed parse user info', e);
}
// set user ip
if (clientIp) {
_.set(req.headers, 'user-info.ipAddress', clientIp);
}
handleUserInfo === null || handleUserInfo === void 0 ? void 0 : handleUserInfo(_.get(req.headers, 'userInfo', {}) || {}, req);
next();
};
module.exports = userInfo;