UNPKG

forest-express

Version:

Official package for all Forest Express Lianas

22 lines (21 loc) 900 B
"use strict"; 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;