@@ -100,19 +100,27 @@ def authfunc(environ, username, password
return True
else:
log.error('user %s is disabled', username)
#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()
#======================================================================
# 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', ''),
'port':ldap_settings.get('ldap_port'),
'bind_dn':ldap_settings.get('ldap_dn_user'),
'bind_pass':ldap_settings.get('ldap_dn_pass'),
@@ -211,14 +219,14 @@ def fill_perms(user):
#=======================================================================
# set default permissions
#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)
#default repositories
for perm in default_perms:
@@ -64,13 +64,13 @@ def ValidUsername(edit, old_data):
#check if user is unique
old_un = None
if edit:
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)
return _ValidUsername
class ValidPassword(formencode.validators.FancyValidator):
@@ -241,12 +241,14 @@ class ValidPath(formencode.validators.Fa
error_dict={'paths_root_path':msg})
return value
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:
user = sa.query(User).filter(User.email == value).scalar()
if user:
raise formencode.Invalid(_("That e-mail address is already taken") ,
@@ -257,12 +259,13 @@ def UniqSystemEmail(old_data):
return _UniqSystemEmail
class ValidSystemEmail(formencode.validators.FancyValidator):
sa = meta.Session
if user is None:
raise formencode.Invalid(_("That e-mail address doesn't exist.") ,
Status change: