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
|
import frappe
|
||||||
|
|
||||||
# 223.1–223.5: IBAN (AZ + 2 digits + 4 uppercase letters + 20 digits = 28 chars)
|
# 223.1–223.5: IBAN (AZ + 2 digits + 4 uppercase letters + 20 alphanumeric = 28 chars)
|
||||||
_IBAN_RE = re.compile(r"AZ\d{2}[A-Z]{4}\d{20}")
|
# Оставляем "AZ" в начале, маскируем остальные 26 символов
|
||||||
# 223.6: card/account number — любая последовательность 10+ цифр подряд
|
_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,}")
|
_DIGITS_RE = re.compile(r"\d{10,}")
|
||||||
|
|
||||||
MASK_IBAN = {"223.1", "223.2", "223.3", "223.4", "223.5"}
|
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):
|
def _mask(account_name, account_number):
|
||||||
if account_number in MASK_IBAN:
|
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:
|
if account_number in MASK_CARD:
|
||||||
account_name = _DIGITS_RE.sub(lambda m: "X" * len(m.group()), account_name)
|
account_name = _DIGITS_RE.sub(lambda m: "X" * len(m.group()), account_name)
|
||||||
return account_name
|
return account_name
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue