forest-express
Version:
Official package for all Forest Express Lianas
22 lines (21 loc) • 900 B
JavaScript
;
var httpError = require('http-errors');
var ipWhitelistService = require('../services/ip-whitelist');
var getIpFromRequest = require('../utils/get-ip-from-request');
function retrieveWhitelist(environmentSecret, ip, next) {
return ipWhitelistService.retrieve(environmentSecret).then(function () {
return ipWhitelistService.isIpValid(ip) ? next() : next(httpError(403, "IP address rejected (".concat(ip, ")")));
})["catch"](function () {
return next(httpError(403, 'IP whitelist not retrieved'));
});
}
function createIpAuthorizer(environmentSecret) {
return function ipAuthorizer(request, response, next) {
var ip = getIpFromRequest(request);
if (!ipWhitelistService.isIpWhitelistRetrieved() || !ipWhitelistService.isIpValid(ip)) {
return retrieveWhitelist(environmentSecret, ip, next);
}
return next();
};
}
module.exports = createIpAuthorizer;