fix: remove sanction loader middleware

This commit is contained in:
Sérgio Salgado 2022-07-08 18:17:30 +01:00 committed by Rafael
parent c77fda2623
commit d76e84428f
4 changed files with 30 additions and 37 deletions

View file

@ -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())

View file

@ -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 }]) => {
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 }
}
})
}
}

View file

@ -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
}

View file

@ -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