[MRG] Adds to auth_ldap the ability to populate user's e-mail address. Also makes possible to specify the lDAP attribute to use to populate the user's name.
commit
073c14b8b5
|
@ -0,0 +1,22 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# OpenERP, Open Source Management Solution
|
||||
# This module copyright (C) 2013 Daniel Reis.
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
import users_ldap_model
|
|
@ -0,0 +1,40 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# OpenERP, Open Source Management Solution
|
||||
# Copyright (C) 2013 Daniel Reis (https://launchpad.com/~dreis-pt)
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
{
|
||||
'name': "LDAP mapping for user name and e-mail",
|
||||
'version': "1.0",
|
||||
'depends': ["auth_ldap"],
|
||||
'author': "Daniel Reis (https://launchpad.com/~dreis-pt)",
|
||||
'description': """\
|
||||
Allows to define the LDAP attributes to use to retrieve user name and e-mail address.
|
||||
|
||||
The default attribute used for the name is "cn".
|
||||
For Active Directory, you might prefer to use "displayName" instead.
|
||||
AD also supports the "mail" attribute, so it can be mapped into OpenERP.
|
||||
""",
|
||||
'category': "Tools",
|
||||
'data': [
|
||||
'users_ldap_view.xml',
|
||||
],
|
||||
'installable': True,
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
|
@ -0,0 +1,74 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# OpenERP, Open Source Management Solution
|
||||
# This module copyright (C) 2013 Daniel Reis
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
from openerp.osv import fields, orm
|
||||
|
||||
import logging
|
||||
_log = logging.getLogger(__name__)
|
||||
|
||||
class CompanyLDAP(orm.Model):
|
||||
_inherit = 'res.company.ldap'
|
||||
_columns = {
|
||||
'name_attribute': fields.char('Name Attribute', size=64,
|
||||
help="By default 'cn' is used. "
|
||||
"For ActiveDirectory you might use 'displayName' instead."),
|
||||
'mail_attribute': fields.char('E-mail attribute', size=64,
|
||||
help="LDAP attribute to use to retrieve em-mail address."),
|
||||
}
|
||||
_defaults = {
|
||||
'name_attribute': 'cn',
|
||||
'mail_attribute': 'mail',
|
||||
}
|
||||
|
||||
def get_ldap_dicts(self, cr, ids=None):
|
||||
"""
|
||||
Copy of auth_ldap's funtion, changing only the SQL, so that it returns
|
||||
all fields in the table.
|
||||
"""
|
||||
if ids:
|
||||
id_clause = 'AND id IN (%s)'
|
||||
args = [tuple(ids)]
|
||||
else:
|
||||
id_clause = ''
|
||||
args = []
|
||||
cr.execute("""
|
||||
SELECT *
|
||||
FROM res_company_ldap
|
||||
WHERE ldap_server != '' """ + id_clause + """ ORDER BY sequence
|
||||
""", args)
|
||||
return cr.dictfetchall()
|
||||
|
||||
def map_ldap_attributes(self, cr, uid, conf, login, ldap_entry):
|
||||
values = super(CompanyLDAP, self).map_ldap_attributes(cr, uid, conf,
|
||||
login, ldap_entry)
|
||||
mapping = [
|
||||
('name', 'name_attribute'),
|
||||
('email', 'mail_attribute'),
|
||||
]
|
||||
for value_key, conf_name in mapping:
|
||||
try:
|
||||
if conf[conf_name]:
|
||||
values[value_key] = ldap_entry[1][conf[conf_name]][0]
|
||||
except KeyError:
|
||||
_log.warning('No LDAP attribute "%s" found for login "%s"' % (
|
||||
conf.get(conf_name), values.get('login')))
|
||||
return values
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
<?xml version="1.0"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<record model="ir.ui.view" id="company_form_view">
|
||||
<field name="name">res.company.form.inherit.users_ldap_mail</field>
|
||||
<field name="model">res.company</field>
|
||||
<field name="inherit_id" ref="auth_ldap.company_form_view"/>
|
||||
<field name="arch" type="xml">
|
||||
|
||||
<field name="ldap_filter" position="after">
|
||||
<field name="name_attribute"/>
|
||||
<field name="mail_attribute"/>
|
||||
</field>
|
||||
|
||||
</field>
|
||||
</record>
|
||||
</data>
|
||||
</openerp>
|
Loading…
Reference in New Issue