Mercurial > kallithea
changeset 741:54684e071457 beta
fixes issue #78, ldap makes user validation caseInsensitive
and fixed validators to check for case insensitive values.
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Tue, 23 Nov 2010 12:58:45 +0100 |
parents | 9279dfedcf93 |
children | 1377a9d4bdb9 |
files | rhodecode/lib/auth.py rhodecode/model/forms.py |
diffstat | 2 files changed, 14 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/rhodecode/lib/auth.py Tue Nov 23 01:58:49 2010 +0100 +++ b/rhodecode/lib/auth.py Tue Nov 23 12:58:45 2010 +0100 @@ -103,6 +103,13 @@ else: + + #since ldap is searching in case insensitive check if this user is still + #not in our system + username = username.lower() + if user_model.get_by_username(username, cache=False) is not None: + return False + from rhodecode.model.settings import SettingsModel ldap_settings = SettingsModel().get_ldap_settings() @@ -110,6 +117,7 @@ # FALLBACK TO LDAP AUTH IN ENABLE #====================================================================== if ldap_settings.get('ldap_active', False): + kwargs = { 'server':ldap_settings.get('ldap_host', ''), 'base_dn':ldap_settings.get('ldap_base_dn', ''), @@ -214,8 +222,8 @@ #default global default_global_perms = sa.query(UserToPerm)\ - .filter(UserToPerm.user == sa.query(User).filter(User.username == - 'default').one()) + .filter(UserToPerm.user == sa.query(User)\ + .filter(User.username == 'default').one()) for perm in default_global_perms: user.permissions['global'].add(perm.permission.permission_name)
--- a/rhodecode/model/forms.py Tue Nov 23 01:58:49 2010 +0100 +++ b/rhodecode/model/forms.py Tue Nov 23 12:58:45 2010 +0100 @@ -67,7 +67,7 @@ old_un = UserModel().get(old_data.get('user_id')).username if old_un != value or not edit: - if UserModel().get_by_username(value, cache=False): + if UserModel().get_by_username(value.lower(), cache=False): raise formencode.Invalid(_('This username already exists') , value, state) @@ -244,6 +244,8 @@ def UniqSystemEmail(old_data): class _UniqSystemEmail(formencode.validators.FancyValidator): def to_python(self, value, state): + value = value.lower() + #TODO:write test for MixedCase scenarios if old_data.get('email') != value: sa = meta.Session() try: @@ -260,6 +262,7 @@ class ValidSystemEmail(formencode.validators.FancyValidator): def to_python(self, value, state): + value = value.lower() sa = meta.Session try: user = sa.query(User).filter(User.email == value).scalar()