From 0ff02395ff8d883f2f732dded8bf02fe0a272bdb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jan=20Pracha=C5=99?= <jan.prachar@gmail.com>
Date: Tue, 9 Mar 2021 16:22:07 +0100
Subject: [PATCH] =?UTF-8?q?Lep=C5=A1=C3=AD=20hl=C3=A1=C5=A1ky=20p=C5=99i?=
 =?UTF-8?q?=20kontrole=20emailov=C3=A9=20adresy?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 mo/users.py | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/mo/users.py b/mo/users.py
index 0bbbb587..50327657 100644
--- a/mo/users.py
+++ b/mo/users.py
@@ -15,13 +15,17 @@ import mo.tokens
 
 def normalize_email(addr: str) -> str:
     if not re.fullmatch(r'.+@.+', addr):
-        raise mo.CheckError('Chybný formát mailové adresy')
+        raise mo.CheckError('V e-mailové adrese chybí zavináč')
 
     if re.search(r'[ \t]', addr):
         raise mo.CheckError('E-mailová adresa obsahuje mezeru')
 
-    if not re.fullmatch(r'[!-~]+', addr):
-        raise mo.CheckError('E-mailová adresa obsahuje znaky mimo ASCII')
+    m = re.search(r'[^!-~]+', addr)
+    if m:
+        if m[0].isprintable():
+            raise mo.CheckError(f'E-mailová adresa obsahuje nepovolené znaky: {m[0]}')
+        else:
+            raise mo.CheckError('E-mailová adresa obsahuje netisknutelné znaky: '+repr(m[0]))
 
     try:
         # Tady úmyslně používáme knihovnu jen ke kontrole a ne k normalizaci,
-- 
GitLab