diff --git a/docs/index.rst b/docs/index.rst index 9e130a986ab056de79a8e922a6739c9909ee7030..e39c74bdb9315ddc4d04615cd895a1c57dc62ed1 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -114,6 +114,10 @@ History Changes: +- 1.0.1 June 5, 2016 + + - Fix ldap filter import. + - 1.0.0 June 4, 2016 - Python 3.x support. Switched from python-ldap to pyldap which is a fork with Python 3.x support. diff --git a/flask_simpleldap/__init__.py b/flask_simpleldap/__init__.py index a88850b4fe90bbafa866dd8d18270598e9b7aa7e..f358fa639570b6e91d558ff7d76e9fd1e67734e8 100644 --- a/flask_simpleldap/__init__.py +++ b/flask_simpleldap/__init__.py @@ -2,7 +2,7 @@ import re from functools import wraps import ldap -from ldap import filter +from ldap import filter as ldap_filter from flask import abort, current_app, g, make_response, redirect, url_for, \ request @@ -93,7 +93,7 @@ class LDAP(object): conn.start_tls_s() return conn except ldap.LDAPError as e: - raise LDAPException(self.error(e)) + raise LDAPException(self.error(e.args)) @property def bind(self): @@ -111,7 +111,7 @@ class LDAP(object): current_app.config['LDAP_PASSWORD']) return conn except ldap.LDAPError as e: - raise LDAPException(self.error(e)) + raise LDAPException(self.error(e.args)) def bind_user(self, username, password): """Attempts to bind a user to the LDAP server using the credentials @@ -158,12 +158,12 @@ class LDAP(object): if user is not None: if not dn_only: fields = current_app.config['LDAP_USER_FIELDS'] - query = filter.filter_format( + query = ldap_filter.filter_format( current_app.config['LDAP_USER_OBJECT_FILTER'], (user,)) elif group is not None: if not dn_only: fields = current_app.config['LDAP_GROUP_FIELDS'] - query = filter.filter_format( + query = ldap_filter.filter_format( current_app.config['LDAP_GROUP_OBJECT_FILTER'], (group,)) conn = self.bind try: @@ -187,7 +187,7 @@ class LDAP(object): result[k] = v return result except ldap.LDAPError as e: - raise LDAPException(self.error(e)) + raise LDAPException(self.error(e.args)) def get_user_groups(self, user): """Returns a ``list`` with the user's groups or ``None`` if @@ -203,14 +203,14 @@ class LDAP(object): [str(current_app.config['LDAP_GROUP_MEMBER_FILTER_FIELD'])] records = conn.search_s( current_app.config['LDAP_BASE_DN'], ldap.SCOPE_SUBTREE, - ldap.filter.filter_format( + ldap_filter.filter_format( current_app.config['LDAP_GROUP_MEMBER_FILTER'], (self.get_object_details(user, dn_only=True),)), fields) else: records = conn.search_s( current_app.config['LDAP_BASE_DN'], ldap.SCOPE_SUBTREE, - ldap.filter.filter_format( + ldap_filter.filter_format( current_app.config['LDAP_USER_OBJECT_FILTER'], (user,)), [current_app.config['LDAP_USER_GROUPS_FIELD']]) @@ -228,11 +228,11 @@ class LDAP(object): records[0][1]: groups = records[0][1][ current_app.config['LDAP_USER_GROUPS_FIELD']] - result = [re.findall(b'(?:cn=|CN=)(.*?),', group)[0] for - group in groups] + result = [re.findall(b'(?:cn=|CN=)(.*?),', group)[0] + for group in groups] return result except ldap.LDAPError as e: - raise LDAPException(self.error(e)) + raise LDAPException(self.error(e.args)) def get_group_members(self, group): """Returns a ``list`` with the group's members or ``None`` if @@ -245,7 +245,7 @@ class LDAP(object): try: records = conn.search_s( current_app.config['LDAP_BASE_DN'], ldap.SCOPE_SUBTREE, - ldap.filter.filter_format( + ldap_filter.filter_format( current_app.config['LDAP_GROUP_OBJECT_FILTER'], (group,)), [current_app.config['LDAP_GROUP_MEMBERS_FIELD']]) conn.unbind_s() @@ -256,15 +256,15 @@ class LDAP(object): current_app.config['LDAP_GROUP_MEMBERS_FIELD']] return members except ldap.LDAPError as e: - raise LDAPException(self.error(e)) + raise LDAPException(self.error(e.args)) @staticmethod def error(e): - e = e.args[0] + e = e[0] if 'desc' in e: return e['desc'] else: - return e[0] + return e @staticmethod def login_required(func):