feat: create blacklist page

This commit is contained in:
Cesar 2020-11-16 15:14:51 +00:00 committed by Josh Harvey
parent 8a9de5d185
commit fd6f1a2fe0
9 changed files with 446 additions and 14 deletions

View file

@ -1,22 +1,52 @@
const db = require('./db')
function blocked (address, cryptoCode) {
const sql = `select * from blacklist where address = $1 and crypto_code = $2`
return db.any(sql, [
address,
cryptoCode
])
// Get all blacklist rows from the DB "blacklist" table
const getBlacklist = () => {
return db.any('select * from blacklist').then(res =>
res.map(item => ({
cryptoCode: item.crypto_code,
address: item.address,
createdByOperator: item.created_by_operator
}))
)
}
function addToUsedAddresses (address, cryptoCode) {
// Delete row from blacklist table by crypto code and address
const deleteFromBlacklist = (cryptoCode, address) => {
return db.none(
'delete from blacklist where crypto_code = $1 and address = $2;',
[cryptoCode, address]
)
}
const insertIntoBlacklist = (cryptoCode, address) => {
return db
.any(
'insert into blacklist(crypto_code, address, created_by_operator) values($1, $2, $3);',
[cryptoCode, address, true]
)
.then(() => {
return { cryptoCode, address }
})
}
function blocked(address, cryptoCode) {
const sql = `select * from blacklist where address = $1 and crypto_code = $2`
return db.any(sql, [address, cryptoCode])
}
function addToUsedAddresses(address, cryptoCode) {
// ETH reuses addresses
if (cryptoCode === 'ETH') return Promise.resolve()
const sql = `insert into blacklist(crypto_code, address, created_by_operator) values ($1, $2, 'f')`
return db.oneOrNone(sql, [
cryptoCode,
address
])
return db.oneOrNone(sql, [cryptoCode, address])
}
module.exports = { blocked, addToUsedAddresses }
module.exports = {
blocked,
addToUsedAddresses,
getBlacklist,
deleteFromBlacklist,
insertIntoBlacklist
}

View file

@ -10,6 +10,7 @@ const { machineAction } = require('../machines')
const logs = require('../../logs')
const settingsLoader = require('../../new-settings-loader')
const tokenManager = require('../../token-manager')
const blacklist = require('../../blacklist')
const serverVersion = require('../../../package.json').version
@ -18,7 +19,13 @@ const funding = require('../funding')
const supervisor = require('../supervisor')
const serverLogs = require('../server-logs')
const pairing = require('../pairing')
const { accounts: accountsConfig, coins, countries, currencies, languages } = require('../config')
const {
accounts: accountsConfig,
coins,
countries,
currencies,
languages
} = require('../config')
const typeDefs = gql`
scalar JSON
@ -192,7 +199,7 @@ const typeDefs = gql`
customerId: ID
txVersion: Int!
termsAccepted: Boolean
commissionPercentage: String
commissionPercentage: String
rawTickerPrice: String
isPaperWallet: Boolean
customerPhone: String
@ -206,6 +213,12 @@ const typeDefs = gql`
machineName: String
}
type Blacklist {
createdByOperator: Boolean!
cryptoCode: String!
address: String!
}
type Query {
countries: [Country]
currencies: [Currency]
@ -226,6 +239,7 @@ const typeDefs = gql`
transactionsCsv(from: Date, until: Date, limit: Int, offset: Int): String
accounts: JSONObject
config: JSONObject
blacklist: [Blacklist]
userTokens: [UserToken]
}
@ -246,6 +260,8 @@ const typeDefs = gql`
createPairingTotem(name: String!): String
saveAccounts(accounts: JSONObject): JSONObject
revokeToken(token: String!): UserToken
deleteBlacklistRow(cryptoCode: String, address: String): Blacklist
insertBlacklistRow(cryptoCode: String!, address: String!): Blacklist
}
`
@ -285,6 +301,7 @@ const resolvers = {
transactions.batch(from, until, limit, offset).then(parseAsync),
config: () => settingsLoader.loadLatestConfigOrNone(),
accounts: () => settingsLoader.loadAccounts(),
blacklist: () => blacklist.getBlacklist(),
userTokens: () => tokenManager.getTokenList()
},
Mutation: {
@ -297,6 +314,10 @@ const resolvers = {
notify()
return it
}),
deleteBlacklistRow: (...[, { cryptoCode, address }]) =>
blacklist.deleteFromBlacklist(cryptoCode, address),
insertBlacklistRow: (...[, { cryptoCode, address }]) =>
blacklist.insertIntoBlacklist(cryptoCode, address),
revokeToken: (...[, { token }]) => tokenManager.revokeToken(token)
}
}