fix: email mask shows max 4 chars instead of half the local part

lizandro.guarnizo (17 chars) was showing 'lizandro.' (9 chars including the dot)
because ceil(17/2)=9. Now always shows exactly min(4, len) chars: 'liza*************@domain'

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Lizandro
2026-07-14 19:34:14 +00:00
co-authored by Claude Sonnet 4.6
parent 9a13bad235
commit 30fc8c0f1b
2 changed files with 5 additions and 4 deletions
+3 -2
View File
@@ -331,8 +331,9 @@ class PublicChat extends Component
private function enmascararEmail(string $email): string
{
[$local, $dominio] = explode('@', $email, 2);
$visible = mb_substr($local, 0, min(3, mb_strlen($local)));
return $visible . str_repeat('*', max(0, mb_strlen($local) - 3)) . '@' . $dominio;
$n = min(4, mb_strlen($local));
$visible = mb_substr($local, 0, $n);
return $visible . str_repeat('*', max(0, mb_strlen($local) - $n)) . '@' . $dominio;
}
// ─────────────────────────────────────────────────────────
+2 -2
View File
@@ -1366,8 +1366,8 @@ class TelegramBotService
{
[$local, $domain] = explode('@', $email, 2);
$len = mb_strlen($local);
$visible = max(4, (int) ceil($len / 2)); // muestra la mitad, mínimo 4 caracteres
return mb_substr($local, 0, min($visible, $len)) . str_repeat('*', max(0, $len - $visible)) . '@' . $domain;
$visible = min(4, $len); // siempre 4 caracteres máximo
return mb_substr($local, 0, $visible) . str_repeat('*', max(0, $len - $visible)) . '@' . $domain;
}
private function createMPPreference(string $titulo, int $valor, string $ref): ?string