diff --git a/cps/admin.py b/cps/admin.py index f222be02..d47bfc3f 100755 --- a/cps/admin.py +++ b/cps/admin.py @@ -1960,8 +1960,11 @@ def _handle_edit_user(to_save, content, languages, translations, kobo_support): if to_save.get("locale"): content.locale = to_save["locale"] try: - if to_save.get("email", content.email) != content.email: - content.email = check_email(to_save["email"]) + new_email = check_email(to_save.get("email", content.email)) + if not new_email: + raise Exception(_(u"E-Mail Address can't be empty and has to be a valid E-Mail")) + if new_email != content.email: + content.email = new_email # Query username, if not existing, change if to_save.get("name", content.name) != content.name: if to_save.get("name") == "Guest": diff --git a/cps/helper.py b/cps/helper.py index c427b483..5c929944 100755 --- a/cps/helper.py +++ b/cps/helper.py @@ -654,11 +654,13 @@ def check_username(username): def valid_email(email): email = email.strip() - # Regex according to https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/email#validation - if not re.search(r"^[\w.!#$%&'*+\\/=?^_`{|}~-]+@[\w](?:[\w-]{0,61}[\w])?(?:\.[\w](?:[\w-]{0,61}[\w])?)*$", - email): - log.error(u"Invalid e-mail address format") - raise Exception(_(u"Invalid e-mail address format")) + # if email is not deleted + if email: + # Regex according to https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/email#validation + if not re.search(r"^[\w.!#$%&'*+\\/=?^_`{|}~-]+@[\w](?:[\w-]{0,61}[\w])?(?:\.[\w](?:[\w-]{0,61}[\w])?)*$", + email): + log.error(u"Invalid e-mail address format") + raise Exception(_(u"Invalid e-mail address format")) return email # ################################# External interface ################################# diff --git a/cps/web.py b/cps/web.py index 9c7d527c..cbfa50c4 100755 --- a/cps/web.py +++ b/cps/web.py @@ -1364,8 +1364,11 @@ def change_profile(kobo_support, local_oauth_check, oauth_status, translations, try: if to_save.get("kindle_mail", current_user.kindle_mail) != current_user.kindle_mail: current_user.kindle_mail = valid_email(to_save.get("kindle_mail")) - if to_save.get("email", current_user.email) != current_user.email: - current_user.email = check_email(to_save.get("email")) + new_email = check_email(to_save.get("email", current_user.email)) + if not new_email: + raise Exception(_(u"E-Mail Address can't be empty and has to be a valid E-Mail")) + if new_email != current_user.email: + current_user.email = new_email if current_user.role_admin(): if to_save.get("name", current_user.name) != current_user.name: # Query username, if not existing, change