From 677cb39f0c4433630adc34096a7d59255a293ade Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Salgado?= Date: Thu, 6 Oct 2022 19:03:00 +0100 Subject: [PATCH] feat: add blacklist message to machine communication --- lib/blacklist.js | 2 +- lib/cash-in/cash-in-low.js | 2 +- lib/cash-in/cash-in-tx.js | 7 ++++--- migrations/1664916753772-advanced-blacklisting.js | 4 +--- 4 files changed, 7 insertions(+), 8 deletions(-) diff --git a/lib/blacklist.js b/lib/blacklist.js index 89a9037f..79835f10 100644 --- a/lib/blacklist.js +++ b/lib/blacklist.js @@ -26,7 +26,7 @@ const insertIntoBlacklist = address => { } function blocked (address) { - const sql = `SELECT * FROM blacklist WHERE address = $1` + const sql = `SELECT address, content FROM blacklist b LEFT OUTER JOIN blacklist_messages bm ON bm.id = b.blacklist_message_id WHERE address = $1` return db.any(sql, [address]) } diff --git a/lib/cash-in/cash-in-low.js b/lib/cash-in/cash-in-low.js index 5b8066a0..0f2942df 100644 --- a/lib/cash-in/cash-in-low.js +++ b/lib/cash-in/cash-in-low.js @@ -8,7 +8,7 @@ const E = require('../error') const PENDING_INTERVAL_MS = 60 * T.minutes -const massageFields = ['direction', 'cryptoNetwork', 'bills', 'blacklisted', 'addressReuse', 'promoCodeApplied', 'validWalletScore', 'cashInFeeCrypto'] +const massageFields = ['direction', 'cryptoNetwork', 'bills', 'blacklisted', 'blacklistMessage', 'addressReuse', 'promoCodeApplied', 'validWalletScore', 'cashInFeeCrypto'] const massageUpdateFields = _.concat(massageFields, 'cryptoAtoms') const massage = _.flow(_.omit(massageFields), diff --git a/lib/cash-in/cash-in-tx.js b/lib/cash-in/cash-in-tx.js index 5123eeb6..2f301cc5 100644 --- a/lib/cash-in/cash-in-tx.js +++ b/lib/cash-in/cash-in-tx.js @@ -32,7 +32,7 @@ function post (machineTx, pi) { return cashInAtomic.atomic(machineTx, pi) .then(r => { const updatedTx = r.tx - let blacklisted = false + let blacklisted = null let addressReuse = false let walletScore = {} @@ -50,7 +50,7 @@ function post (machineTx, pi) { walletScore = fetchedWalletScore if (_.some(it => it.address === updatedTx.toAddress)(blacklistItems)) { - blacklisted = true + blacklisted = _.find(it => it.address === updatedTx.toAddress)(blacklistItems) notifier.notifyIfActive('compliance', 'blacklistNotify', r.tx, false) } else if (isReusedAddress && rejectAddressReuse) { notifier.notifyIfActive('compliance', 'blacklistNotify', r.tx, true) @@ -61,7 +61,8 @@ function post (machineTx, pi) { .then(changes => _.set('walletScore', _.isNil(walletScore) ? null : walletScore.score, changes)) .then(changes => cashInLow.update(db, updatedTx, changes)) .then(tx => _.set('bills', machineTx.bills, tx)) - .then(tx => _.set('blacklisted', blacklisted, tx)) + .then(tx => _.set('blacklisted', Boolean(blacklisted), tx)) + .then(tx => _.set('blacklistMessage', blacklisted?.content, tx)) .then(tx => _.set('addressReuse', addressReuse, tx)) .then(tx => _.set('validWalletScore', _.isNil(walletScore) ? true : walletScore.isValid, tx)) }) diff --git a/migrations/1664916753772-advanced-blacklisting.js b/migrations/1664916753772-advanced-blacklisting.js index 915c1f33..4648f182 100644 --- a/migrations/1664916753772-advanced-blacklisting.js +++ b/migrations/1664916753772-advanced-blacklisting.js @@ -13,9 +13,7 @@ exports.up = function (next) { allow_toggle BOOLEAN NOT NULL DEFAULT true )`, `INSERT INTO blacklist_messages (id, label, content, allow_toggle) VALUES ('${defaultMessageId}', 'Suspicious address', 'This address may be associated with a deceptive offer or a prohibited group. Please make sure you''re using an address from your own wallet.', false)`, - `ALTER TABLE blacklist ADD COLUMN blacklist_message_id UUID REFERENCES blacklist_messages(id)`, - `UPDATE blacklist SET blacklist_message_id = '${defaultMessageId}'`, - `ALTER TABLE blacklist ALTER COLUMN blacklist_message_id SET NOT NULL` + `ALTER TABLE blacklist ADD COLUMN blacklist_message_id UUID REFERENCES blacklist_messages(id) NOT NULL DEFAULT '${defaultMessageId}'` ] db.multi(sql, next)