From 04d94f96687ef80acdf9f09952866385f1cc494f Mon Sep 17 00:00:00 2001 From: Jean-Guilhem Rouel Date: Tue, 24 Jun 2025 14:45:39 +0200 Subject: [PATCH] obfuscate email addresses, similarly to what's done on lists.w3.org --- src/Twig/TwigExtension.php | 7 +++++++ templates/components/evangelists.html.twig | 2 +- templates/components/listings/people/user.html.twig | 4 ++-- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/Twig/TwigExtension.php b/src/Twig/TwigExtension.php index 2476574f..ee501071 100644 --- a/src/Twig/TwigExtension.php +++ b/src/Twig/TwigExtension.php @@ -72,6 +72,7 @@ public function getFilters() new TwigFilter('strip_group_type', [$this, 'stripGroupType']), new TwigFilter('locale_to_bcp47', [$this, 'localeToBcp47']), new TwigFilter('bcp47_to_locale', [$this, 'bcp47ToLocale']), + new TwigFilter('obfuscate', [$this, 'obfuscate'], ['is_safe' => ['html']]), ]; } @@ -291,4 +292,10 @@ public function bcp47ToLocale(string $locale): string { return str_replace('-', '_', $locale); } + + public function obfuscate(string $text): string + { + // Obfuscate string by replacing all characters with their HTML entity equivalents + return mb_encode_numericentity($text, [0x000000, 0x10ffff, 0, 0xffffff], 'UTF-8'); + } } diff --git a/templates/components/evangelists.html.twig b/templates/components/evangelists.html.twig index 9143467f..4eaf17ed 100644 --- a/templates/components/evangelists.html.twig +++ b/templates/components/evangelists.html.twig @@ -29,7 +29,7 @@

{{ 'components.people.tel'|trans({'number': evangelist.phone}, 'w3c_website_templates_bundle')|raw }}

{% endif %} {% if evangelist.email %} -

{{ 'components.people.email'|trans({'email': evangelist.email}, 'w3c_website_templates_bundle')|raw }}

+

{{ 'components.people.email'|trans({'email': evangelist.email|obfuscate}, 'w3c_website_templates_bundle')|raw }}

{% endif %} diff --git a/templates/components/listings/people/user.html.twig b/templates/components/listings/people/user.html.twig index bd08ebbc..8bc4934c 100644 --- a/templates/components/listings/people/user.html.twig +++ b/templates/components/listings/people/user.html.twig @@ -20,12 +20,12 @@
{% block email %}
- + - {{ user.preferredEmail }} + {{ user.preferredEmail|obfuscate }}
{% endblock %}