diff options
Diffstat (limited to 'bank/src/main/kotlin')
6 files changed, 22 insertions, 20 deletions
diff --git a/bank/src/main/kotlin/tech/libeufin/bank/db/AccountDAO.kt b/bank/src/main/kotlin/tech/libeufin/bank/db/AccountDAO.kt index f78947e7..49ca49c0 100644 --- a/bank/src/main/kotlin/tech/libeufin/bank/db/AccountDAO.kt +++ b/bank/src/main/kotlin/tech/libeufin/bank/db/AccountDAO.kt @@ -194,15 +194,17 @@ class AccountDAO(private val db: Database) { login: String, is2fa: Boolean ): AccountDeletionResult = db.serializable { conn -> + val now = Instant.now().toDbMicros() ?: throw faultyTimestampByBank() val stmt = conn.prepareStatement(""" SELECT out_not_found, out_balance_not_zero, out_tan_required - FROM account_delete(?,?); + FROM account_delete(?,?,?) """) stmt.setString(1, login) - stmt.setBoolean(2, is2fa) + stmt.setLong(2, now) + stmt.setBoolean(3, is2fa) stmt.executeQuery().use { when { !it.next() -> throw internalServerError("Deletion returned nothing.") @@ -265,7 +267,7 @@ class AccountDAO(private val db: Database) { FROM customers JOIN bank_accounts ON customer_id=owning_customer_id - WHERE login=? + WHERE login=? AND deleted_at IS NULL """).run { setString(1, login) oneOrNull { @@ -388,7 +390,8 @@ class AccountDAO(private val db: Database) { ): AccountPatchAuthResult = db.serializable { it.transaction { conn -> val (currentPwh, tanRequired) = conn.prepareStatement(""" - SELECT password_hash, (NOT ? AND tan_channel IS NOT NULL) FROM customers WHERE login=? + SELECT password_hash, (NOT ? AND tan_channel IS NOT NULL) + FROM customers WHERE login=? AND deleted_at IS NULL """).run { setBoolean(1, is2fa) setString(2, login) @@ -415,7 +418,7 @@ class AccountDAO(private val db: Database) { /** Get password hash of account [login] */ suspend fun passwordHash(login: String): String? = db.conn { conn -> val stmt = conn.prepareStatement(""" - SELECT password_hash FROM customers WHERE login=? + SELECT password_hash FROM customers WHERE login=? AND deleted_at IS NULL """) stmt.setString(1, login) stmt.oneOrNull { @@ -432,9 +435,8 @@ class AccountDAO(private val db: Database) { ,name ,is_taler_exchange FROM bank_accounts - JOIN customers - ON customer_id=owning_customer_id - WHERE login=? + JOIN customers ON customer_id=owning_customer_id + WHERE login=? AND deleted_at IS NULL """) stmt.setString(1, login) stmt.oneOrNull { @@ -466,7 +468,7 @@ class AccountDAO(private val db: Database) { FROM customers JOIN bank_accounts ON customer_id=owning_customer_id - WHERE login=? + WHERE login=? AND deleted_at IS NULL """) stmt.setString(1, login) stmt.oneOrNull { @@ -512,7 +514,7 @@ class AccountDAO(private val db: Database) { bank_account_id FROM bank_accounts JOIN customers ON owning_customer_id = customer_id - WHERE is_public=true AND name LIKE ? AND + WHERE is_public=true AND name LIKE ? AND deleted_at IS NULL AND """, { setString(1, params.loginFilter) @@ -555,7 +557,7 @@ class AccountDAO(private val db: Database) { ,bank_account_id FROM bank_accounts JOIN customers ON owning_customer_id = customer_id - WHERE name LIKE ? AND + WHERE name LIKE ? AND deleted_at IS NULL AND """, { setString(1, params.loginFilter) diff --git a/bank/src/main/kotlin/tech/libeufin/bank/db/CashoutDAO.kt b/bank/src/main/kotlin/tech/libeufin/bank/db/CashoutDAO.kt index 3f044ea1..0f9d8f86 100644 --- a/bank/src/main/kotlin/tech/libeufin/bank/db/CashoutDAO.kt +++ b/bank/src/main/kotlin/tech/libeufin/bank/db/CashoutDAO.kt @@ -104,7 +104,7 @@ class CashoutDAO(private val db: Database) { JOIN bank_accounts ON bank_account=bank_account_id JOIN customers ON owning_customer_id=customer_id LEFT JOIN bank_account_transactions ON local_transaction=bank_transaction_id - WHERE cashout_id=? AND login=? + WHERE cashout_id=? AND login=? AND deleted_at IS NULL """) stmt.setLong(1, id) stmt.setString(2, login) @@ -134,7 +134,7 @@ class CashoutDAO(private val db: Database) { FROM cashout_operations JOIN bank_accounts ON bank_account=bank_account_id JOIN customers ON owning_customer_id=customer_id - WHERE + WHERE deleted_at IS NULL AND """) { GlobalCashoutInfo( cashout_id = it.getLong("cashout_id"), @@ -150,7 +150,7 @@ class CashoutDAO(private val db: Database) { FROM cashout_operations JOIN bank_accounts ON bank_account=bank_account_id JOIN customers ON owning_customer_id=customer_id - WHERE login = ? AND + WHERE login = ? AND deleted_at IS NULL AND """, bind = { setString(1, login) diff --git a/bank/src/main/kotlin/tech/libeufin/bank/db/TanDAO.kt b/bank/src/main/kotlin/tech/libeufin/bank/db/TanDAO.kt index 9017540d..66771c93 100644 --- a/bank/src/main/kotlin/tech/libeufin/bank/db/TanDAO.kt +++ b/bank/src/main/kotlin/tech/libeufin/bank/db/TanDAO.kt @@ -163,7 +163,7 @@ class TanDAO(private val db: Database) { SELECT body, tan_challenges.tan_channel, tan_info FROM tan_challenges JOIN customers ON customer=customer_id - WHERE challenge_id=? AND op=?::op_enum AND login=? + WHERE challenge_id=? AND op=?::op_enum AND login=? AND deleted_at IS NULL """) stmt.setLong(1, id) stmt.setString(2, op.name) diff --git a/bank/src/main/kotlin/tech/libeufin/bank/db/TokenDAO.kt b/bank/src/main/kotlin/tech/libeufin/bank/db/TokenDAO.kt index 8a5c594c..0723ac88 100644 --- a/bank/src/main/kotlin/tech/libeufin/bank/db/TokenDAO.kt +++ b/bank/src/main/kotlin/tech/libeufin/bank/db/TokenDAO.kt @@ -40,7 +40,7 @@ class TokenDAO(private val db: Database) { ): Boolean = db.serializable { conn -> // TODO single query val bankCustomer = conn.prepareStatement(""" - SELECT customer_id FROM customers WHERE login=? + SELECT customer_id FROM customers WHERE login=? AND deleted_at IS NULL """).run { setString(1, login) oneOrNull { it.getLong(1) }!! @@ -75,7 +75,7 @@ class TokenDAO(private val db: Database) { is_refreshable FROM bearer_tokens JOIN customers ON bank_customer=customer_id - WHERE content=?; + WHERE content=? AND deleted_at IS NULL """) stmt.setBytes(1, token) stmt.oneOrNull { diff --git a/bank/src/main/kotlin/tech/libeufin/bank/db/TransactionDAO.kt b/bank/src/main/kotlin/tech/libeufin/bank/db/TransactionDAO.kt index 81fd558f..bbd70bcf 100644 --- a/bank/src/main/kotlin/tech/libeufin/bank/db/TransactionDAO.kt +++ b/bank/src/main/kotlin/tech/libeufin/bank/db/TransactionDAO.kt @@ -165,7 +165,7 @@ class TransactionDAO(private val db: Database) { FROM bank_account_transactions JOIN bank_accounts ON bank_account_transactions.bank_account_id=bank_accounts.bank_account_id JOIN customers ON customer_id=owning_customer_id - WHERE bank_transaction_id=? AND login=? + WHERE bank_transaction_id=? AND login=? AND deleted_at IS NULL """) stmt.setLong(1, rowId) stmt.setString(2, login) diff --git a/bank/src/main/kotlin/tech/libeufin/bank/db/WithdrawalDAO.kt b/bank/src/main/kotlin/tech/libeufin/bank/db/WithdrawalDAO.kt index 330006a1..27b4002e 100644 --- a/bank/src/main/kotlin/tech/libeufin/bank/db/WithdrawalDAO.kt +++ b/bank/src/main/kotlin/tech/libeufin/bank/db/WithdrawalDAO.kt @@ -189,7 +189,7 @@ class WithdrawalDAO(private val db: Database) { FROM taler_withdrawal_operations JOIN bank_accounts ON wallet_bank_account=bank_account_id JOIN customers ON customer_id=owning_customer_id - WHERE withdrawal_uuid=? + WHERE withdrawal_uuid=? AND deleted_at IS NULL """) stmt.setObject(1, uuid) stmt.oneOrNull { it.getString(1) } @@ -250,7 +250,7 @@ class WithdrawalDAO(private val db: Database) { FROM taler_withdrawal_operations JOIN bank_accounts ON wallet_bank_account=bank_account_id JOIN customers ON customer_id=owning_customer_id - WHERE withdrawal_uuid=? + WHERE withdrawal_uuid=? AND deleted_at IS NULL """) stmt.setObject(1, uuid) stmt.oneOrNull { |