collective / pas.plugins.ldap

Zope (and Plone) PAS Plugin providing users and groups from LDAP directory
http://pypi.python.org/pypi/pas.plugins.ldap
Other
13 stars 20 forks source link

Error display for /plone_ldapcontrolpanel #86

Closed alecghica closed 4 years ago

alecghica commented 4 years ago

When a wrong value is provided for the "Groups container DN" field the /plone_ldapcontrolpanel view crashes and there is no way (except from ZMI maybe) to update the value.

Python 3 Plone = 5.2 pas.plugin.ldap = 1.6.2 Products.PluggableAuthService = 2.1.1

Traceback (most recent call last): File "/plone/instance/src/pas.plugins.ldap/src/pas/plugins/ldap/plugin.py", line 336, in getGroupsForPrincipal except Exception as err: File "/plone/buildout-cache/eggs/node.ext.ldap-1.0b11-py3.7.egg/node/ext/ldap/ugm/_api.py", line 245, in groups return [groups[uid] for uid in self.group_ids] File "/plone/buildout-cache/eggs/node.ext.ldap-1.0b11-py3.7.egg/node/ext/ldap/ugm/_api.py", line 281, in group_ids res = [att[groups._keyattr][0] for , att in matches_generator] File "/plone/buildout-cache/eggs/node.ext.ldap-1.0b11-py3.7.egg/node/ext/ldap/ugm/_api.py", line 281, in res = [att[groups._keyattr][0] for , att in matches_generator] File "/plone/buildout-cache/eggs/node.ext.ldap-1.0b11-py3.7.egg/node/ext/ldap/_node.py", line 575, in batched_search matches, cookie = search_func(kw) File "/plone/buildout-cache/eggs/node-0.9.24-py3.7.egg/node/utils.py", line 250, in wrapped f_result = func(*args, *kws) File "/plone/buildout-cache/eggs/node.ext.ldap-1.0b11-py3.7.egg/node/ext/ldap/_node.py", line 521, in search cookie=cookie File "/plone/buildout-cache/eggs/node.ext.ldap-1.0b11-py3.7.egg/node/ext/ldap/session.py", line 59, in search cookie File "/plone/buildout-cache/eggs/node.ext.ldap-1.0b11-py3.7.egg/node/ext/ldap/base.py", line 260, in search args File "/plone/buildout-cache/eggs/bda.cache-1.3.0-py3.7.egg/bda/cache/memcached.py", line 112, in getData ret = func(args, kwargs) File "/plone/buildout-cache/eggs/node.ext.ldap-1.0b11-py3.7.egg/node/ext/ldap/base.py", line 237, in _search rtype, results, rmsgid, rctrls = self._con.result3(msgid) File "/plone/buildout-cache/eggs/python_ldap-3.2.0-py3.7-linux-x86_64.egg/ldap/ldapobject.py", line 751, in result3 resp_ctrl_classes=resp_ctrl_classes File "/plone/buildout-cache/eggs/python_ldap-3.2.0-py3.7-linux-x86_64.egg/ldap/ldapobject.py", line 758, in result4 ldap_result = self._ldap_call(self._l.result4,msgid,all,timeout,add_ctrls,add_intermediates,add_extop) File "/plone/buildout-cache/eggs/python_ldap-3.2.0-py3.7-linux-x86_64.egg/ldap/ldapobject.py", line 331, in _ldap_call reraise(exc_type, exc_value, exc_traceback) File "/plone/buildout-cache/eggs/python_ldap-3.2.0-py3.7-linux-x86_64.egg/ldap/compat.py", line 44, in reraise raise exc_value File "/plone/buildout-cache/eggs/python_ldap-3.2.0-py3.7-linux-x86_64.egg/ldap/ldapobject.py", line 315, in _ldap_call result = func(*args,**kwargs) ldap.NO_SUCH_OBJECT: {'desc': 'No such object', 'matched': 'ou=Roles,o=EIONET,l=Europe'}

alecghica commented 4 years ago

I submitted a fix.