fix IBAN masking: support alphanumeric chars, keep AZ prefix
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
df9f72be11
commit
dc273b3f2b
|
|
@ -2,9 +2,10 @@ import re
|
|||
|
||||
import frappe
|
||||
|
||||
# 223.1–223.5: IBAN (AZ + 2 digits + 4 uppercase letters + 20 digits = 28 chars)
|
||||
_IBAN_RE = re.compile(r"AZ\d{2}[A-Z]{4}\d{20}")
|
||||
# 223.6: card/account number — любая последовательность 10+ цифр подряд
|
||||
# 223.1–223.5: IBAN (AZ + 2 digits + 4 uppercase letters + 20 alphanumeric = 28 chars)
|
||||
# Оставляем "AZ" в начале, маскируем остальные 26 символов
|
||||
_IBAN_RE = re.compile(r"AZ\d{2}[A-Z]{4}[A-Z0-9]{20}")
|
||||
# 223.6: номер карты — любая последовательность 10+ цифр подряд
|
||||
_DIGITS_RE = re.compile(r"\d{10,}")
|
||||
|
||||
MASK_IBAN = {"223.1", "223.2", "223.3", "223.4", "223.5"}
|
||||
|
|
@ -13,7 +14,7 @@ MASK_CARD = {"223.6"}
|
|||
|
||||
def _mask(account_name, account_number):
|
||||
if account_number in MASK_IBAN:
|
||||
account_name = _IBAN_RE.sub(lambda m: "X" * len(m.group()), account_name)
|
||||
account_name = _IBAN_RE.sub(lambda m: "AZ" + "X" * (len(m.group()) - 2), account_name)
|
||||
if account_number in MASK_CARD:
|
||||
account_name = _DIGITS_RE.sub(lambda m: "X" * len(m.group()), account_name)
|
||||
return account_name
|
||||
|
|
|
|||
Loading…
Reference in New Issue