refactor: logic and routing folders on new-admin
This commit is contained in:
parent
0c7c7ccf42
commit
d9e3a9e61f
10 changed files with 94 additions and 87 deletions
|
|
@ -11,14 +11,13 @@ const cookieParser = require('cookie-parser')
|
||||||
const { ApolloServer, AuthenticationError } = require('apollo-server-express')
|
const { ApolloServer, AuthenticationError } = require('apollo-server-express')
|
||||||
const _ = require('lodash/fp')
|
const _ = require('lodash/fp')
|
||||||
|
|
||||||
const T = require('../time')
|
const { typeDefs, resolvers } = require('./graphql/schema')
|
||||||
|
const login = require('./modules/login')
|
||||||
|
const register = require('./routes/authentication')
|
||||||
|
|
||||||
const options = require('../options')
|
const options = require('../options')
|
||||||
|
|
||||||
const login = require('./login')
|
|
||||||
const { typeDefs, resolvers } = require('./graphql/schema')
|
|
||||||
|
|
||||||
const devMode = require('minimist')(process.argv.slice(2)).dev
|
const devMode = require('minimist')(process.argv.slice(2)).dev
|
||||||
const NEVER = new Date(Date.now() + 100 * T.years)
|
|
||||||
const idPhotoCardBasedir = _.get('idPhotoCardDir', options)
|
const idPhotoCardBasedir = _.get('idPhotoCardDir', options)
|
||||||
const frontCameraBasedir = _.get('frontCameraDir', options)
|
const frontCameraBasedir = _.get('frontCameraDir', options)
|
||||||
|
|
||||||
|
|
@ -66,35 +65,7 @@ app.use(cors({ credentials: true, origin: devMode && 'https://localhost:3001' })
|
||||||
|
|
||||||
app.use('/id-card-photo', serveStatic(idPhotoCardBasedir, { index: false }))
|
app.use('/id-card-photo', serveStatic(idPhotoCardBasedir, { index: false }))
|
||||||
app.use('/front-camera-photo', serveStatic(frontCameraBasedir, { index: false }))
|
app.use('/front-camera-photo', serveStatic(frontCameraBasedir, { index: false }))
|
||||||
|
app.use('/', register)
|
||||||
app.get('/api/register', (req, res, next) => {
|
|
||||||
const otp = req.query.otp
|
|
||||||
const ua = req.headers['user-agent']
|
|
||||||
const ip = req.ip
|
|
||||||
|
|
||||||
if (!otp) return next()
|
|
||||||
|
|
||||||
return login.register(otp, ua, ip)
|
|
||||||
.then(r => {
|
|
||||||
if (r.expired) return res.status(401).send('OTP expired, generate new registration link')
|
|
||||||
|
|
||||||
// Maybe user is using old registration key, attempt to authenticate
|
|
||||||
if (!r.success) return next()
|
|
||||||
|
|
||||||
const cookieOpts = {
|
|
||||||
httpOnly: true,
|
|
||||||
secure: true,
|
|
||||||
domain: hostname,
|
|
||||||
sameSite: true,
|
|
||||||
expires: NEVER
|
|
||||||
}
|
|
||||||
|
|
||||||
const token = r.token
|
|
||||||
req.token = token
|
|
||||||
res.cookie('token', token, cookieOpts)
|
|
||||||
res.sendStatus(200)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
// Everything not on graphql or api/register is redirected to the front-end
|
// Everything not on graphql or api/register is redirected to the front-end
|
||||||
app.get('*', (req, res) => res.sendFile(path.resolve(__dirname, '..', '..', 'public', 'index.html')))
|
app.get('*', (req, res) => res.sendFile(path.resolve(__dirname, '..', '..', 'public', 'index.html')))
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ const DataLoader = require('dataloader')
|
||||||
|
|
||||||
const machineLoader = require('../../machine-loader')
|
const machineLoader = require('../../machine-loader')
|
||||||
const customers = require('../../customers')
|
const customers = require('../../customers')
|
||||||
const { machineAction } = require('../machines')
|
const { machineAction } = require('../modules/machines')
|
||||||
const logs = require('../../logs')
|
const logs = require('../../logs')
|
||||||
const settingsLoader = require('../../new-settings-loader')
|
const settingsLoader = require('../../new-settings-loader')
|
||||||
// const tokenManager = require('../../token-manager')
|
// const tokenManager = require('../../token-manager')
|
||||||
|
|
@ -19,14 +19,14 @@ const bills = require('../bills')
|
||||||
const anonymous = require('../../constants').anonymousCustomer
|
const anonymous = require('../../constants').anonymousCustomer
|
||||||
|
|
||||||
const serverVersion = require('../../../package.json').version
|
const serverVersion = require('../../../package.json').version
|
||||||
const transactions = require('../transactions')
|
|
||||||
const funding = require('../funding')
|
|
||||||
const forex = require('../../forex')
|
|
||||||
const supervisor = require('../supervisor')
|
|
||||||
const serverLogs = require('../server-logs')
|
|
||||||
const pairing = require('../pairing')
|
|
||||||
const plugins = require('../../plugins')
|
|
||||||
|
|
||||||
|
const transactions = require('../modules/transactions')
|
||||||
|
const funding = require('../modules/funding')
|
||||||
|
const forex = require('../../forex')
|
||||||
|
const supervisor = require('../modules/supervisor')
|
||||||
|
const serverLogs = require('../modules/server-logs')
|
||||||
|
const pairing = require('../modules/pairing')
|
||||||
|
const plugins = require('../../plugins')
|
||||||
const {
|
const {
|
||||||
accounts: accountsConfig,
|
accounts: accountsConfig,
|
||||||
coins,
|
coins,
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,11 @@
|
||||||
const _ = require('lodash/fp')
|
const _ = require('lodash/fp')
|
||||||
const BN = require('../bn')
|
const BN = require('../../bn')
|
||||||
const settingsLoader = require('../new-settings-loader')
|
const settingsLoader = require('../../new-settings-loader')
|
||||||
const configManager = require('../new-config-manager')
|
const configManager = require('../../new-config-manager')
|
||||||
const wallet = require('../wallet')
|
const wallet = require('../../wallet')
|
||||||
const ticker = require('../ticker')
|
const ticker = require('../../ticker')
|
||||||
const coinUtils = require('../coin-utils')
|
const coinUtils = require('../../coin-utils')
|
||||||
const logger = require('../logger')
|
const logger = require('../../logger')
|
||||||
|
|
||||||
function allScopes (cryptoScopes, machineScopes) {
|
function allScopes (cryptoScopes, machineScopes) {
|
||||||
const scopes = []
|
const scopes = []
|
||||||
|
|
@ -70,7 +70,7 @@ function getSingleCoinFunding (settings, fiatCode, cryptoCode) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Promise.allSettled not running on current version of node
|
// Promise.allSettled not running on current version of node
|
||||||
const reflect = p => p.then(value => ({value, status: "fulfilled" }), error => ({error: error.toString(), status: "rejected" }))
|
const reflect = p => p.then(value => ({ value, status: 'fulfilled' }), error => ({ error: error.toString(), status: 'rejected' }))
|
||||||
|
|
||||||
function getFunding () {
|
function getFunding () {
|
||||||
return settingsLoader.loadLatest().then(settings => {
|
return settingsLoader.loadLatest().then(settings => {
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
const crypto = require('crypto')
|
const crypto = require('crypto')
|
||||||
|
|
||||||
const db = require('../db')
|
const db = require('../../db')
|
||||||
|
|
||||||
function generateOTP (name) {
|
function generateOTP (name) {
|
||||||
const otp = crypto.randomBytes(32).toString('hex')
|
const otp = crypto.randomBytes(32).toString('hex')
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
const machineLoader = require('../machine-loader')
|
const machineLoader = require('../../machine-loader')
|
||||||
const { UserInputError } = require('apollo-server-express')
|
const { UserInputError } = require('apollo-server-express')
|
||||||
|
|
||||||
function getMachine (machineId) {
|
function getMachine (machineId) {
|
||||||
|
|
@ -4,9 +4,9 @@ const readFile = pify(fs.readFile)
|
||||||
const crypto = require('crypto')
|
const crypto = require('crypto')
|
||||||
const baseX = require('base-x')
|
const baseX = require('base-x')
|
||||||
|
|
||||||
const options = require('../options')
|
const options = require('../../options')
|
||||||
const db = require('../db')
|
const db = require('../../db')
|
||||||
const pairing = require('../pairing')
|
const pairing = require('../../pairing')
|
||||||
|
|
||||||
const ALPHA_BASE = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:'
|
const ALPHA_BASE = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:'
|
||||||
const bsAlpha = baseX(ALPHA_BASE)
|
const bsAlpha = baseX(ALPHA_BASE)
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
const _ = require('lodash/fp')
|
const _ = require('lodash/fp')
|
||||||
const uuid = require('uuid')
|
const uuid = require('uuid')
|
||||||
|
|
||||||
const db = require('../db')
|
const db = require('../../db')
|
||||||
|
|
||||||
function getServerLogs (from = new Date(0).toISOString(), until = new Date().toISOString(), limit = null, offset = 0) {
|
function getServerLogs (from = new Date(0).toISOString(), until = new Date().toISOString(), limit = null, offset = 0) {
|
||||||
const sql = `select id, log_level, timestamp, message from server_logs
|
const sql = `select id, log_level, timestamp, message from server_logs
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
const xmlrpc = require('xmlrpc')
|
const xmlrpc = require('xmlrpc')
|
||||||
const logger = require('../logger')
|
const logger = require('../../logger')
|
||||||
const { promisify } = require('util')
|
const { promisify } = require('util')
|
||||||
|
|
||||||
// TODO new-admin: add the following to supervisor config
|
// TODO new-admin: add the following to supervisor config
|
||||||
|
|
@ -1,11 +1,11 @@
|
||||||
const _ = require('lodash/fp')
|
const _ = require('lodash/fp')
|
||||||
const pgp = require('pg-promise')()
|
const pgp = require('pg-promise')()
|
||||||
|
|
||||||
const db = require('../db')
|
const db = require('../../db')
|
||||||
const machineLoader = require('../machine-loader')
|
const machineLoader = require('../../machine-loader')
|
||||||
const tx = require('../tx')
|
const tx = require('../../tx')
|
||||||
const cashInTx = require('../cash-in/cash-in-tx')
|
const cashInTx = require('../../cash-in/cash-in-tx')
|
||||||
const { REDEEMABLE_AGE } = require('../cash-out/cash-out-helper')
|
const { REDEEMABLE_AGE } = require('../../cash-out/cash-out-helper')
|
||||||
|
|
||||||
const NUM_RESULTS = 1000
|
const NUM_RESULTS = 1000
|
||||||
|
|
||||||
|
|
@ -64,16 +64,10 @@ function batch (from = new Date(0).toISOString(), until = new Date().toISOString
|
||||||
order by created desc limit $4 offset $5`
|
order by created desc limit $4 offset $5`
|
||||||
|
|
||||||
return Promise.all([
|
return Promise.all([
|
||||||
db.any(cashInSql, [
|
db.any(cashInSql, [cashInTx.PENDING_INTERVAL, from, until, limit, offset, id]),
|
||||||
cashInTx.PENDING_INTERVAL,
|
|
||||||
from,
|
|
||||||
until,
|
|
||||||
limit,
|
|
||||||
offset,
|
|
||||||
id
|
|
||||||
]),
|
|
||||||
db.any(cashOutSql, [REDEEMABLE_AGE, from, until, limit, offset, id])
|
db.any(cashOutSql, [REDEEMABLE_AGE, from, until, limit, offset, id])
|
||||||
]).then(packager)
|
])
|
||||||
|
.then(packager)
|
||||||
}
|
}
|
||||||
|
|
||||||
function getCustomerTransactionsBatch (ids) {
|
function getCustomerTransactionsBatch (ids) {
|
||||||
42
lib/new-admin/routes/authentication.js
Normal file
42
lib/new-admin/routes/authentication.js
Normal file
|
|
@ -0,0 +1,42 @@
|
||||||
|
const express = require('express')
|
||||||
|
const router = express.Router()
|
||||||
|
|
||||||
|
const login = require('../modules/login')
|
||||||
|
const options = require('../../options')
|
||||||
|
const T = require('../../time')
|
||||||
|
|
||||||
|
const NEVER = new Date(Date.now() + 100 * T.years)
|
||||||
|
const hostname = options.hostname
|
||||||
|
|
||||||
|
const register = (req, res, next) => {
|
||||||
|
const otp = req.query.otp
|
||||||
|
const ua = req.headers['user-agent']
|
||||||
|
const ip = req.ip
|
||||||
|
|
||||||
|
if (!otp) return next()
|
||||||
|
|
||||||
|
return login.register(otp, ua, ip)
|
||||||
|
.then(r => {
|
||||||
|
if (r.expired) return res.status(401).send('OTP expired, generate new registration link')
|
||||||
|
|
||||||
|
// Maybe user is using old registration key, attempt to authenticate
|
||||||
|
if (!r.success) return next()
|
||||||
|
|
||||||
|
const cookieOpts = {
|
||||||
|
httpOnly: true,
|
||||||
|
secure: true,
|
||||||
|
domain: hostname,
|
||||||
|
sameSite: true,
|
||||||
|
expires: NEVER
|
||||||
|
}
|
||||||
|
|
||||||
|
const token = r.token
|
||||||
|
req.token = token
|
||||||
|
res.cookie('token', token, cookieOpts)
|
||||||
|
res.sendStatus(200)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
router.get('/api/register', register)
|
||||||
|
|
||||||
|
module.exports = router
|
||||||
Loading…
Add table
Add a link
Reference in a new issue