From cb456c91699b84f3bc40155693cfb54d62ce43c3 Mon Sep 17 00:00:00 2001
From: Julian Rother <julianr@fsmpi.rwth-aachen.de>
Date: Fri, 19 May 2017 20:11:29 +0200
Subject: [PATCH] Disbale check_names on LDAP connection

ldap3 behavior differs severely between different versions with check_names enabled.
---
 db.py | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/db.py b/db.py
index cb6c2a7..53523bd 100644
--- a/db.py
+++ b/db.py
@@ -152,13 +152,12 @@ if 'LDAP_HOST' in config:
 	def ldapauth(user, password):
 		user = LDAP_USERRE.sub(r'', user.lower())
 		try:
-			conn = ldap3.Connection(ldap3.Server(config['LDAP_HOST'], port=config['LDAP_PORT'], use_ssl=True), 'fsmpi\\%s'%user, password, auto_bind=True)
+			conn = ldap3.Connection(ldap3.Server(config['LDAP_HOST'], port=config['LDAP_PORT'], use_ssl=True), 'fsmpi\\%s'%user, password, auto_bind=True, check_names=False)
 		except ldap3.core.exceptions.LDAPBindError:
 			return {}, []
 		conn.search("cn=users,dc=fsmpi,dc=rwth-aachen,dc=de", "(cn=%s)"%user, attributes=['memberOf', 'givenName', 'sn'])
-		info = dict(conn.response[0]['attributes'])
-		info['uid'] = user
-		groups = [g.split(',')[0].split('=')[-1] for g in info['memberOf']]
+		info = {'uid': user, 'givenName': conn.response[0]['attributes']['givenName'][0], 'sn': conn.response[0]['attributes']['sn'][0]}
+		groups = [g.split(',')[0].split('=')[-1] for g in conn.response[0]['attributes']['memberOf']]
 		conn.unbind()
 		return info, groups
 
-- 
GitLab