Browse Source
some makeup and change the ldap operators from plain python objects to a transientmodel
pull/207/head^2
some makeup and change the ldap operators from plain python objects to a transientmodel
pull/207/head^2
Giacomo Spettoli
10 years ago
5 changed files with 103 additions and 92 deletions
-
64users_ldap_groups/README.rst
-
2users_ldap_groups/__init__.py
-
22users_ldap_groups/__openerp__.py
-
54users_ldap_groups/users_ldap_groups.py
-
53users_ldap_groups/users_ldap_groups_operators.py
@ -0,0 +1,64 @@ |
|||
.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg |
|||
:alt: License: AGPL-3 |
|||
|
|||
users_ldap_groups |
|||
================= |
|||
|
|||
Adds user accounts to groups based on rules defined by the administrator. |
|||
|
|||
|
|||
Usage |
|||
===== |
|||
|
|||
Define mappings in Settings->Companies->[your company]->tab configuration->[ |
|||
your ldap server]. |
|||
|
|||
Decide whether you want only groups mapped from ldap (Only ldap groups=y) or a |
|||
mix of manually set groups and ldap groups (Only ldap groups=n). Setting this |
|||
to 'no' will result in users never losing privileges when you remove them from |
|||
a ldap group, so that's a potential security issue. It is still the default to |
|||
prevent losing group information by accident. |
|||
|
|||
For active directory, use LDAP attribute 'memberOf' and operator 'contains'. |
|||
Fill in the DN of the windows group as value and choose an OpenERP group users |
|||
with this windows group are to be assigned to. |
|||
|
|||
For posix accounts, use operator 'query' and a value like |
|||
(&(cn=bzr)(objectClass=posixGroup)(memberUid=$uid)) |
|||
|
|||
The operator query matches if the filter in value returns something, and value |
|||
can contain $[attribute] which will be replaced by the first value of the |
|||
user's ldap record's attribute named [attribute]. |
|||
|
|||
Bug Tracker |
|||
=========== |
|||
|
|||
Bugs are tracked on `GitHub Issues <https://github.com/OCA/server-tools/issues>`_. |
|||
In case of trouble, please check there if your issue has already been reported. |
|||
If you spotted it first, help us smashing it by providing a detailed and welcomed feedback |
|||
`here <https://github.com/OCA/server-tools/issues/new?body=module:%20{module_name}%0Aversion:%20{version}%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_. |
|||
|
|||
|
|||
Credits |
|||
======= |
|||
|
|||
Contributors |
|||
------------ |
|||
|
|||
* Therp BV <info@therp.nl> |
|||
* Giacomo Spettoli <giacomo.spettoli@gmail.com> |
|||
|
|||
Maintainer |
|||
---------- |
|||
|
|||
.. image:: https://odoo-community.org/logo.png |
|||
:alt: Odoo Community Association |
|||
:target: https://odoo-community.org |
|||
|
|||
This module is maintained by the OCA. |
|||
|
|||
OCA, or the Odoo Community Association, is a nonprofit organization whose |
|||
mission is to support the collaborative development of Odoo features and |
|||
promote its widespread use. |
|||
|
|||
To contribute to this module, please visit http://odoo-community.org. |
@ -1,53 +0,0 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################## |
|||
# |
|||
# OpenERP, Open Source Management Solution |
|||
# This module copyright (C) 2012 Therp BV (<http://therp.nl>). |
|||
# |
|||
# 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 string import Template |
|||
|
|||
|
|||
class LDAPOperator: |
|||
pass |
|||
|
|||
|
|||
class contains(LDAPOperator): |
|||
def check_value(self, ldap_entry, attribute, value, ldap_config, company, |
|||
logger): |
|||
return (attribute in ldap_entry[1]) and \ |
|||
(value in ldap_entry[1][attribute]) |
|||
|
|||
|
|||
class equals(LDAPOperator): |
|||
def check_value(self, ldap_entry, attribute, value, ldap_config, company, |
|||
logger): |
|||
return attribute in ldap_entry[1] and \ |
|||
unicode(value) == unicode(ldap_entry[1][attribute]) |
|||
|
|||
|
|||
class query(LDAPOperator): |
|||
def check_value(self, ldap_entry, attribute, value, ldap_config, company, |
|||
logger): |
|||
query_string = Template(value).safe_substitute(dict( |
|||
[(attr, ldap_entry[1][attribute][0]) for attr in ldap_entry[1]] |
|||
) |
|||
) |
|||
logger.debug('evaluating query group mapping, filter: %s' % |
|||
query_string) |
|||
results = company.query(ldap_config, query_string) |
|||
logger.debug(results) |
|||
return bool(results) |
Write
Preview
Loading…
Cancel
Save
Reference in new issue