[IMP] allows anonymous bind to LDAP

lp bug: https://launchpad.net/bugs/794450 fixed

bzr revid: stefan@therp.nl-20110608093506-c035lvr168jruz9f
This commit is contained in:
Stefan Rijnhart
2011-06-08 11:35:06 +02:00
parent 154addd6bb
commit d55cf59d40
2 changed files with 20 additions and 9 deletions
+10 -7
View File
@@ -37,14 +37,15 @@ class CompanyLDAP(osv.osv):
ondelete='cascade'),
'ldap_server': fields.char('LDAP Server address', size=64, required=True),
'ldap_server_port': fields.integer('LDAP Server port', required=True),
'ldap_binddn': fields.char('LDAP binddn', size=64, required=True),
'ldap_password': fields.char('LDAP password', size=64, required=True),
'ldap_binddn': fields.char('LDAP binddn', size=64),
'ldap_password': fields.char('LDAP password', size=64),
'ldap_filter': fields.char('LDAP filter', size=64, required=True),
'ldap_base': fields.char('LDAP base', size=64, required=True),
'user': fields.many2one('res.users', 'Model User',
help="Model used for user creation"),
'create_user': fields.boolean('Create user',
help="Create the user if not in database"),
'anonymous': fields.boolean('Anonymous bind'),
}
_defaults = {
'ldap_server': lambda *a: '127.0.0.1',
@@ -75,14 +76,15 @@ class users(osv.osv):
action_obj = pool.get('ir.actions.actions')
cr.execute("""
SELECT id, company, ldap_server, ldap_server_port, ldap_binddn, ldap_password,
ldap_filter, ldap_base, "user", create_user
ldap_filter, ldap_base, "user", create_user, anonymous
FROM res_company_ldap
WHERE ldap_server != '' and ldap_binddn != '' ORDER BY sequence""")
WHERE ldap_server != '' and anonymous = TRUE or ldap_binddn != '' ORDER BY sequence""")
for res_company_ldap in cr.dictfetchall():
logger.debug(res_company_ldap)
try:
l = ldap.open(res_company_ldap['ldap_server'], res_company_ldap['ldap_server_port'])
if l.simple_bind_s(res_company_ldap['ldap_binddn'], res_company_ldap['ldap_password']):
if (res_company_ldap['anonymous'] or
l.simple_bind_s(res_company_ldap['ldap_binddn'], res_company_ldap['ldap_password'])):
base = res_company_ldap['ldap_base']
scope = ldap.SCOPE_SUBTREE
filter = filter_format(res_company_ldap['ldap_filter'], (login,))
@@ -150,8 +152,9 @@ class users(osv.osv):
for res_company_ldap in user.company_id.ldaps:
try:
l = ldap.open(res_company_ldap.ldap_server, res_company_ldap.ldap_server_port)
if l.simple_bind_s(res_company_ldap.ldap_binddn,
res_company_ldap.ldap_password):
if (res_company_ldap.anonymous or
l.simple_bind_s(res_company_ldap.ldap_binddn,
res_company_ldap.ldap_password)):
base = res_company_ldap.ldap_base
scope = ldap.SCOPE_SUBTREE
filter = filter_format(res_company_ldap.ldap_filter, (user.login,))
+10 -2
View File
@@ -12,8 +12,16 @@
<form string="LDAP Configuration">
<field name="ldap_server"/>
<field name="ldap_server_port"/>
<field name="ldap_binddn"/>
<field name="ldap_password"/>
<field name="ldap_binddn" attrs="{
'required': [('anonymous', '!=', True)],
'readonly': [('anonymous', '=', True)],
}"/>
<field name="ldap_password" attrs="{
'required': [('anonymous', '!=', True)],
'readonly': [('anonymous', '=', True)],
}"/>
<field name="anonymous"/>
<newline/>
<field name="ldap_base"/>
<field name="ldap_filter"/>
<field name="create_user"/>