summaryrefslogtreecommitdiff
path: root/bank/src/main/kotlin
diff options
context:
space:
mode:
Diffstat (limited to 'bank/src/main/kotlin')
-rw-r--r--bank/src/main/kotlin/tech/libeufin/bank/db/AccountDAO.kt24
-rw-r--r--bank/src/main/kotlin/tech/libeufin/bank/db/CashoutDAO.kt6
-rw-r--r--bank/src/main/kotlin/tech/libeufin/bank/db/TanDAO.kt2
-rw-r--r--bank/src/main/kotlin/tech/libeufin/bank/db/TokenDAO.kt4
-rw-r--r--bank/src/main/kotlin/tech/libeufin/bank/db/TransactionDAO.kt2
-rw-r--r--bank/src/main/kotlin/tech/libeufin/bank/db/WithdrawalDAO.kt4
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 {