feat: customer auth via email
This commit is contained in:
parent
92a3f16c80
commit
ab304093f3
22 changed files with 252 additions and 27 deletions
|
|
@ -6,13 +6,10 @@ const makeDir = require('make-dir')
|
|||
const path = require('path')
|
||||
const fs = require('fs')
|
||||
const util = require('util')
|
||||
const { sub, differenceInHours } = require('date-fns/fp')
|
||||
|
||||
const db = require('./db')
|
||||
const BN = require('./bn')
|
||||
const anonymous = require('../lib/constants').anonymousCustomer
|
||||
const complianceOverrides = require('./compliance_overrides')
|
||||
const users = require('./users')
|
||||
const writeFile = util.promisify(fs.writeFile)
|
||||
const notifierQueries = require('./notifier/queries')
|
||||
const notifierUtils = require('./notifier/utils')
|
||||
|
|
@ -43,6 +40,12 @@ function add (customer) {
|
|||
.then(camelize)
|
||||
}
|
||||
|
||||
function addWithEmail (customer) {
|
||||
const sql = 'insert into customers (id, email, email_at) values ($1, $2, now()) returning *'
|
||||
return db.one(sql, [uuid.v4(), customer.email])
|
||||
.then(camelize)
|
||||
}
|
||||
|
||||
/**
|
||||
* Get single customer by phone
|
||||
* Phone numbers are unique per customer
|
||||
|
|
@ -60,6 +63,12 @@ function get (phone) {
|
|||
.then(camelize)
|
||||
}
|
||||
|
||||
function getWithEmail (email) {
|
||||
const sql = 'select * from customers where email=$1'
|
||||
return db.oneOrNone(sql, [email])
|
||||
.then(camelize)
|
||||
}
|
||||
|
||||
/**
|
||||
* Update customer record
|
||||
*
|
||||
|
|
@ -308,7 +317,7 @@ const updateSubscriberData = (customerId, data, userToken) => {
|
|||
*
|
||||
* Used for the machine.
|
||||
*/
|
||||
function getById (id, userToken) {
|
||||
function getById (id) {
|
||||
const sql = 'select * from customers where id=$1'
|
||||
return db.oneOrNone(sql, [id])
|
||||
.then(assignCustomerData)
|
||||
|
|
@ -349,6 +358,7 @@ function camelizeDeep (customer) {
|
|||
function getComplianceTypes () {
|
||||
return [
|
||||
'sms',
|
||||
'email',
|
||||
'id_card_data',
|
||||
'id_card_photo',
|
||||
'front_camera',
|
||||
|
|
@ -482,7 +492,7 @@ function getCustomersList (phone = null, name = null, address = null, id = null)
|
|||
const passableErrorCodes = _.map(Pgp.as.text, TX_PASSTHROUGH_ERROR_CODES).join(',')
|
||||
|
||||
const sql = `SELECT id, authorized_override, days_suspended, is_suspended, front_camera_path, front_camera_override,
|
||||
phone, sms_override, id_card_data, id_card_data_override, id_card_data_expiration,
|
||||
phone, email, sms_override, id_card_data, id_card_data_override, id_card_data_expiration,
|
||||
id_card_photo_path, id_card_photo_override, us_ssn, us_ssn_override, sanctions, sanctions_at,
|
||||
sanctions_override, total_txs, total_spent, GREATEST(created, last_transaction, last_data_provided) AS last_active, fiat AS last_tx_fiat,
|
||||
fiat_code AS last_tx_fiat_code, tx_class AS last_tx_class, custom_fields, notes, is_test_customer
|
||||
|
|
@ -491,9 +501,9 @@ function getCustomersList (phone = null, name = null, address = null, id = null)
|
|||
greatest(0, date_part('day', c.suspended_until - NOW())) AS days_suspended,
|
||||
c.suspended_until > NOW() AS is_suspended,
|
||||
c.front_camera_path, c.front_camera_override,
|
||||
c.phone, c.sms_override, c.id_card_data, c.id_card_data_override, c.id_card_data_expiration,
|
||||
c.phone, c.email, c.sms_override, c.id_card_data, c.id_card_data_override, c.id_card_data_expiration,
|
||||
c.id_card_photo_path, c.id_card_photo_override, c.us_ssn, c.us_ssn_override, c.sanctions,
|
||||
GREATEST(c.phone_at, c.id_card_data_at, c.front_camera_at, c.id_card_photo_at, c.us_ssn_at) AS last_data_provided,
|
||||
GREATEST(c.phone_at, c.email_at, c.id_card_data_at, c.front_camera_at, c.id_card_photo_at, c.us_ssn_at) AS last_data_provided,
|
||||
c.sanctions_at, c.sanctions_override, c.is_test_customer, c.created, t.tx_class, t.fiat, t.fiat_code, t.created as last_transaction, cn.notes,
|
||||
row_number() OVER (partition by c.id order by t.created desc) AS rn,
|
||||
sum(CASE WHEN t.id IS NOT NULL THEN 1 ELSE 0 END) OVER (partition by c.id) AS total_txs,
|
||||
|
|
@ -540,7 +550,7 @@ function getCustomersList (phone = null, name = null, address = null, id = null)
|
|||
function getCustomerById (id) {
|
||||
const passableErrorCodes = _.map(Pgp.as.text, TX_PASSTHROUGH_ERROR_CODES).join(',')
|
||||
const sql = `SELECT id, authorized_override, days_suspended, is_suspended, front_camera_path, front_camera_at, front_camera_override,
|
||||
phone, phone_at, phone_override, sms_override, id_card_data_at, id_card_data, id_card_data_override, id_card_data_expiration,
|
||||
phone, phone_at, email, email_at, phone_override, sms_override, id_card_data_at, id_card_data, id_card_data_override, id_card_data_expiration,
|
||||
id_card_photo_path, id_card_photo_at, id_card_photo_override, us_ssn_at, us_ssn, us_ssn_override, sanctions, sanctions_at,
|
||||
sanctions_override, total_txs, total_spent, LEAST(created, last_transaction) AS last_active, fiat AS last_tx_fiat,
|
||||
fiat_code AS last_tx_fiat_code, tx_class AS last_tx_class, subscriber_info, subscriber_info_at, custom_fields, notes, is_test_customer
|
||||
|
|
@ -549,7 +559,7 @@ function getCustomerById (id) {
|
|||
greatest(0, date_part('day', c.suspended_until - now())) AS days_suspended,
|
||||
c.suspended_until > now() AS is_suspended,
|
||||
c.front_camera_path, c.front_camera_override, c.front_camera_at,
|
||||
c.phone, c.phone_at, c.phone_override, c.sms_override, c.id_card_data, c.id_card_data_at, c.id_card_data_override, c.id_card_data_expiration,
|
||||
c.phone, c.phone_at, c.email, c.email_at, c.phone_override, c.sms_override, c.id_card_data, c.id_card_data_at, c.id_card_data_override, c.id_card_data_expiration,
|
||||
c.id_card_photo_path, c.id_card_photo_at, c.id_card_photo_override, c.us_ssn, c.us_ssn_at, c.us_ssn_override, c.sanctions,
|
||||
c.sanctions_at, c.sanctions_override, c.subscriber_info, c.subscriber_info_at, c.is_test_customer, c.created, t.tx_class, t.fiat, t.fiat_code, t.created as last_transaction, cn.notes,
|
||||
row_number() OVER (PARTITION BY c.id ORDER BY t.created DESC) AS rn,
|
||||
|
|
@ -912,7 +922,9 @@ function disableTestCustomer (customerId) {
|
|||
|
||||
module.exports = {
|
||||
add,
|
||||
addWithEmail,
|
||||
get,
|
||||
getWithEmail,
|
||||
batch,
|
||||
getCustomersList,
|
||||
getCustomerById,
|
||||
|
|
@ -930,7 +942,5 @@ module.exports = {
|
|||
updateEditedPhoto,
|
||||
updateTxCustomerPhoto,
|
||||
enableTestCustomer,
|
||||
disableTestCustomer,
|
||||
selectLatestData,
|
||||
getEditedData
|
||||
disableTestCustomer
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue