From 43abff48166308e8afd5cb821e8afc17eeff2636 Mon Sep 17 00:00:00 2001 From: Kevin Fenzi Date: Thu, 9 Jun 2016 16:10:08 +0000 Subject: [PATCH] patch from https://github.com/fedora-infra/fas/pull/163 --- roles/fas_server/files/user.py | 5 ++++- roles/fas_server/files/validators.py | 17 +++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/roles/fas_server/files/user.py b/roles/fas_server/files/user.py index 3974a6066b..0f246da3f0 100644 --- a/roles/fas_server/files/user.py +++ b/roles/fas_server/files/user.py @@ -88,7 +88,7 @@ from fas.auth import ( from fas.util import available_languages from fas.validators import KnownUser, PasswordStrength, ValidGPGKeyID, \ ValidSSHKey, NonFedoraEmail, ValidLanguage, UnknownUser, ValidUsername, \ - ValidHumanWithOverride, MaybeFloat + ValidHumanWithOverride, MaybeFloat, EVEmail from fas import _ #ADMIN_GROUP = config.get('admingroup', 'accounts') @@ -112,10 +112,12 @@ class UserCreate(validators.Schema): email = validators.All( validators.Email(not_empty=True, strip=True), NonFedoraEmail(not_empty=True, strip=True), + EVEmail(not_empty=True, strip=True), ) verify_email = validators.All( validators.Email(not_empty=True, strip=True), NonFedoraEmail(not_empty=True, strip=True), + EVEmail(not_empty=True, strip=True), ) security_question = validators.UnicodeString(not_empty=True) security_answer = validators.UnicodeString(not_empty=True) @@ -159,6 +161,7 @@ class UserSave(validators.Schema): email = validators.All( validators.Email(not_empty=True, strip=True, max=128), NonFedoraEmail(not_empty=True, strip=True, max=128), + EVEmail(not_empty=True, strip=True, max=128), ) locale = ValidLanguage(not_empty=True, strip=True) #fedoraPersonBugzillaMail = validators.Email(strip=True, max=128) diff --git a/roles/fas_server/files/validators.py b/roles/fas_server/files/validators.py index 6f2c5cd648..ba631ec51a 100644 --- a/roles/fas_server/files/validators.py +++ b/roles/fas_server/files/validators.py @@ -36,6 +36,7 @@ import re from turbogears import validators, config +from turbomail.email_validator import EmailValidator from sqlalchemy.exc import InvalidRequestError from fas.util import available_languages @@ -175,6 +176,22 @@ class NonFedoraEmail(validators.FancyValidator): if value.endswith('@fedoraproject.org'): raise validators.Invalid(self.message('no_loop', state), value, state) +class EVEmail(validators.FancyValidator): + '''Make sure that an email address is not @fedoraproject.org''' + messages = {'invalid': _('Your email address is invalid')} + + def _to_python(self, value, state): + # pylint: disable-msg=C0111,W0613 + return value.strip() + + def validate_python(self, value, state): + # pylint: disable-msg=C0111 + ev = EmailValidator() + try: + ev.validate_or_raise(value) + except: + raise validators.Invalid(self.message('invalid', state), value, state) + class MaybeFloat(validators.FancyValidator): ''' Make sure the float value is a valid float value (or None) ''' messages = {'no_float': _('Error - Not a valid float value: %(value)s')}