Do not set LDAP password on set_preferences

issue7568
review62311003
This commit is contained in:
Cédric Krier committed 2018-08-26 18:06:06 +02:00
1 parent ef74da8b67
commit 5f43cb19ec
2 files changed
+1 -29

No files matched your search

+1
View File
@@ -1,3 +1,4 @@
* Do not set LDAP password on set_preferences
* Remove support for Python 2.7
Version 4.8.0 - 2018-04-23
-29
View File
@@ -131,35 +131,6 @@ class User(metaclass=PoolMeta):
cls._check_passwd_ldap_user(logins)
super(User, cls).write(*args)
@classmethod
def set_preferences(cls, values, parameters):
if 'password' in values:
if 'password' not in parameters:
msg = cls.fields_get(['password'])['password']['string']
raise LoginException('password', msg, type='password')
old_password = parameters['password']
try:
server = ldap_server()
if server:
user = cls(Transaction().user)
uid = config.get(section, 'uid', default='uid')
users = cls.ldap_search_user(
user.login, server, attrs=[uid])
if users and len(users) == 1:
[(dn, attrs)] = users
con = ldap3.Connection(server, dn, old_password)
if con.bind():
con.extend.standard.modify_password(
dn, old_password, values['password'])
values = values.copy()
del values['password']
else:
cls.raise_user_error('wrong_password')
except LDAPException:
logger.error('LDAPError when setting preferences',
exc_info=True)
super(User, cls).set_preferences(values, parameters)
@classmethod
def _login_ldap(cls, login, parameters):
if 'password' not in parameters: