You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

51 lines
2.0 KiB

  1. # -*- coding: utf-8 -*-
  2. ##############################################################################
  3. #
  4. # Odoo, Open Source Management Solution
  5. #
  6. # Copyright (c) 2009-2016 Noviat nv/sa (www.noviat.com).
  7. #
  8. # This program is free software: you can redistribute it and/or modify
  9. # it under the terms of the GNU Affero General Public License as
  10. # published by the Free Software Foundation, either version 3 of the
  11. # License, or (at your option) any later version.
  12. #
  13. # This program is distributed in the hope that it will be useful,
  14. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  15. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  16. # GNU Affero General Public License for more details.
  17. #
  18. # You should have received a copy of the GNU Affero General Public License
  19. # along with this program. If not, see <http://www.gnu.org/licenses/>.
  20. #
  21. ##############################################################################
  22. from openerp import api, models
  23. from openerp import SUPERUSER_ID
  24. from openerp.modules.registry import RegistryManager
  25. class ResUsers(models.Model):
  26. _inherit = 'res.users'
  27. def _login(self, db, login, password):
  28. """
  29. Call map_groups also for existing users
  30. in order to enforce the 'only_ldap_groups'
  31. security policy.
  32. """
  33. uid = super(ResUsers, self)._login(db, login, password)
  34. if uid:
  35. registry = RegistryManager.get(db)
  36. with registry.cursor() as cr:
  37. ldap_obj = registry.get('res.company.ldap')
  38. for ldap_config in ldap_obj.get_ldap_dicts(cr):
  39. ldap_entry = ldap_obj.authenticate(
  40. ldap_config, login, password)
  41. if ldap_entry:
  42. env = api.Environment(cr, SUPERUSER_ID, {})
  43. comp_ldap = env['res.company.ldap'].browse(
  44. ldap_config['id'])
  45. comp_ldap.map_groups(
  46. uid, ldap_config, ldap_entry)
  47. return uid