From d76e84428f7f094e1068ca2b74bd4d54bb8c495a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Salgado?= Date: Fri, 8 Jul 2022 18:17:30 +0100 Subject: [PATCH] fix: remove sanction loader middleware --- lib/new-admin/admin-server.js | 3 +- .../graphql/resolvers/sanctions.resolver.js | 34 ++++++++++++++++--- lib/new-admin/middlewares/index.js | 2 -- .../middlewares/loadSanctionLists.js | 28 --------------- 4 files changed, 30 insertions(+), 37 deletions(-) delete mode 100644 lib/new-admin/middlewares/loadSanctionLists.js diff --git a/lib/new-admin/admin-server.js b/lib/new-admin/admin-server.js index e2a7ab70..3b13daf8 100644 --- a/lib/new-admin/admin-server.js +++ b/lib/new-admin/admin-server.js @@ -20,7 +20,7 @@ const { typeDefs, resolvers } = require('./graphql/schema') const findOperatorId = require('../middlewares/operatorId') const computeSchema = require('../compute-schema') const { USER_SESSIONS_CLEAR_INTERVAL } = require('../constants') -const { session, cleanUserSessions, buildApolloContext, loadSanctionLists } = require('./middlewares') +const { session, cleanUserSessions, buildApolloContext } = require('./middlewares') const devMode = require('minimist')(process.argv.slice(2)).dev @@ -48,7 +48,6 @@ app.use(express.static(path.resolve(__dirname, '..', '..', 'public'))) app.use(cleanUserSessions(USER_SESSIONS_CLEAR_INTERVAL)) app.use(computeSchema) app.use(findOperatorId) -app.use(loadSanctionLists) app.use(session) app.use(graphqlUploadExpress()) diff --git a/lib/new-admin/graphql/resolvers/sanctions.resolver.js b/lib/new-admin/graphql/resolvers/sanctions.resolver.js index 9bd211dd..3945516a 100644 --- a/lib/new-admin/graphql/resolvers/sanctions.resolver.js +++ b/lib/new-admin/graphql/resolvers/sanctions.resolver.js @@ -1,13 +1,37 @@ const _ = require('lodash/fp') +const logger = require('../../../logger') const ofac = require('../../../ofac') +const T = require('../../../time') + +const sanctionStatus = { + loaded: false, + timestamp: null +} + +const loadOrUpdateSanctions = () => { + if (!sanctionStatus.loaded || (sanctionStatus.timestamp && Date.now() > sanctionStatus.timestamp + T.minute)) { + logger.info('No sanction lists loaded. Loading sanctions...') + return ofac.load() + .then(() => { + logger.info('OFAC sanction list loaded!') + sanctionStatus.loaded = true + sanctionStatus.timestamp = Date.now() + }) + .catch(e => { + logger.error('Couldn\'t load OFAC sanction list!') + }) + } + + return Promise.resolve() +} const resolvers = { Query: { - checkAgainstSanctions: (...[, { firstName, lastName, birthdate }]) => { - const ofacMatches = ofac.match({ firstName, lastName }, birthdate, { threshold: 0.85, fullNameThreshold: 0.95, debug: false }) - - return { ofacSanctioned: _.size(ofacMatches) > 0 } - } + checkAgainstSanctions: (...[, { firstName, lastName, birthdate }]) => loadOrUpdateSanctions() + .then(() => { + const ofacMatches = ofac.match({ firstName, lastName }, birthdate, { threshold: 0.85, fullNameThreshold: 0.95, debug: false }) + return { ofacSanctioned: _.size(ofacMatches) > 0 } + }) } } diff --git a/lib/new-admin/middlewares/index.js b/lib/new-admin/middlewares/index.js index 21cd4751..cedba31c 100644 --- a/lib/new-admin/middlewares/index.js +++ b/lib/new-admin/middlewares/index.js @@ -1,11 +1,9 @@ const cleanUserSessions = require('./cleanUserSessions') const buildApolloContext = require('./context') -const loadSanctionLists = require('./loadSanctionLists') const session = require('./session') module.exports = { cleanUserSessions, buildApolloContext, - loadSanctionLists, session } diff --git a/lib/new-admin/middlewares/loadSanctionLists.js b/lib/new-admin/middlewares/loadSanctionLists.js deleted file mode 100644 index 48d2c0b8..00000000 --- a/lib/new-admin/middlewares/loadSanctionLists.js +++ /dev/null @@ -1,28 +0,0 @@ -const logger = require('../../logger') -const sanctions = require('../../ofac') - -const sanctionStatus = { - loaded: false, - timestamp: null -} - -const loadSanctionLists = (req, res, next) => { - if (!sanctionStatus.loaded) { - logger.info('No sanction lists loaded. Loading sanctions...') - return sanctions.load() - .then(() => { - logger.info('OFAC sanction list loaded!') - sanctionStatus.loaded = true - sanctionStatus.timestamp = Date.now() - return next() - }) - .catch(e => { - logger.error('Couldn\'t load OFAC sanction list!') - return next(e) - }) - } - - return next() -} - -module.exports = loadSanctionLists