mirror of
https://github.com/bringout/oca-server-auth.git
synced 2026-04-18 07:12:07 +02:00
Initial commit: OCA Server Auth packages (29 packages)
This commit is contained in:
commit
3ed80311c4
1325 changed files with 127292 additions and 0 deletions
46
odoo-bringout-oca-server-auth-users_ldap_groups/README.md
Normal file
46
odoo-bringout-oca-server-auth-users_ldap_groups/README.md
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
# LDAP groups assignment
|
||||
|
||||
Odoo addon: users_ldap_groups
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
pip install odoo-bringout-oca-server-auth-users_ldap_groups
|
||||
```
|
||||
|
||||
## Dependencies
|
||||
|
||||
This addon depends on:
|
||||
- auth_ldap
|
||||
|
||||
## Manifest Information
|
||||
|
||||
- **Name**: LDAP groups assignment
|
||||
- **Version**: 16.0.1.0.1
|
||||
- **Category**: Authentication
|
||||
- **License**: AGPL-3
|
||||
- **Installable**: False
|
||||
|
||||
## Source
|
||||
|
||||
Based on [OCA/server-auth](https://github.com/OCA/server-auth) branch 16.0, addon `users_ldap_groups`.
|
||||
|
||||
## License
|
||||
|
||||
This package maintains the original AGPL-3 license from the upstream Odoo project.
|
||||
|
||||
## Documentation
|
||||
|
||||
- Overview: doc/OVERVIEW.md
|
||||
- Architecture: doc/ARCHITECTURE.md
|
||||
- Models: doc/MODELS.md
|
||||
- Controllers: doc/CONTROLLERS.md
|
||||
- Wizards: doc/WIZARDS.md
|
||||
- Reports: doc/REPORTS.md
|
||||
- Security: doc/SECURITY.md
|
||||
- Install: doc/INSTALL.md
|
||||
- Usage: doc/USAGE.md
|
||||
- Configuration: doc/CONFIGURATION.md
|
||||
- Dependencies: doc/DEPENDENCIES.md
|
||||
- Troubleshooting: doc/TROUBLESHOOTING.md
|
||||
- FAQ: doc/FAQ.md
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
# Architecture
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
U[Users] -->|HTTP| V[Views and QWeb Templates]
|
||||
V --> C[Controllers]
|
||||
V --> W[Wizards – Transient Models]
|
||||
C --> M[Models and ORM]
|
||||
W --> M
|
||||
M --> R[Reports]
|
||||
DX[Data XML] --> M
|
||||
S[Security – ACLs and Groups] -. enforces .-> M
|
||||
|
||||
subgraph Users_ldap_groups Module - users_ldap_groups
|
||||
direction LR
|
||||
M:::layer
|
||||
W:::layer
|
||||
C:::layer
|
||||
V:::layer
|
||||
R:::layer
|
||||
S:::layer
|
||||
DX:::layer
|
||||
end
|
||||
|
||||
classDef layer fill:#eef8ff,stroke:#6ea8fe,stroke-width:1px
|
||||
```
|
||||
|
||||
Notes
|
||||
- Views include tree/form/kanban templates and report templates.
|
||||
- Controllers provide website/portal routes when present.
|
||||
- Wizards are UI flows implemented with `models.TransientModel`.
|
||||
- Data XML loads data/demo records; Security defines groups and access.
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
# Configuration
|
||||
|
||||
Refer to Odoo settings for users_ldap_groups. Configure related models, access rights, and options as needed.
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
# Controllers
|
||||
|
||||
This module does not define custom HTTP controllers.
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
# Dependencies
|
||||
|
||||
This addon depends on:
|
||||
|
||||
- [auth_ldap](../../odoo-bringout-oca-ocb-auth_ldap)
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
# FAQ
|
||||
|
||||
- Q: Which Odoo version? A: 16.0 (OCA/OCB packaged).
|
||||
- Q: How to enable? A: Start server with --addon users_ldap_groups or install in UI.
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
# Install
|
||||
|
||||
```bash
|
||||
pip install odoo-bringout-oca-server-auth-users_ldap_groups"
|
||||
# or
|
||||
uv pip install odoo-bringout-oca-server-auth-users_ldap_groups"
|
||||
```
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
# Models
|
||||
|
||||
Detected core models and extensions in users_ldap_groups.
|
||||
|
||||
```mermaid
|
||||
classDiagram
|
||||
class res_company_ldap_group_mapping
|
||||
class res_company_ldap_operator
|
||||
class res_company_ldap
|
||||
class res_users
|
||||
```
|
||||
|
||||
Notes
|
||||
- Classes show model technical names; fields omitted for brevity.
|
||||
- Items listed under _inherit are extensions of existing models.
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
# Overview
|
||||
|
||||
Packaged Odoo addon: users_ldap_groups. Provides features documented in upstream Odoo 16 under this addon.
|
||||
|
||||
- Source: OCA/OCB 16.0, addon users_ldap_groups
|
||||
- License: LGPL-3
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
# Reports
|
||||
|
||||
This module does not define custom reports.
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
# Security
|
||||
|
||||
Access control and security definitions in users_ldap_groups.
|
||||
|
||||
## Access Control Lists (ACLs)
|
||||
|
||||
Model access permissions defined in:
|
||||
- **[ir.model.access.csv](../users_ldap_groups/security/ir.model.access.csv)**
|
||||
- 1 model access rules
|
||||
|
||||
## Record Rules
|
||||
|
||||
Row-level security rules defined in:
|
||||
|
||||
```mermaid
|
||||
graph TB
|
||||
subgraph "Security Layers"
|
||||
A[Users] --> B[Groups]
|
||||
B --> C[Access Control Lists]
|
||||
C --> D[Models]
|
||||
B --> E[Record Rules]
|
||||
E --> F[Individual Records]
|
||||
end
|
||||
```
|
||||
|
||||
Security files overview:
|
||||
- **[ir.model.access.csv](../users_ldap_groups/security/ir.model.access.csv)**
|
||||
- Model access permissions (CRUD rights)
|
||||
|
||||
Notes
|
||||
- Access Control Lists define which groups can access which models
|
||||
- Record Rules provide row-level security (filter records by user/group)
|
||||
- Security groups organize users and define permission sets
|
||||
- All security is enforced at the ORM level by Odoo
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
# Troubleshooting
|
||||
|
||||
- Ensure Python and Odoo environment matches repo guidance.
|
||||
- Check database connectivity and logs if startup fails.
|
||||
- Validate that dependent addons listed in DEPENDENCIES.md are installed.
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
# Usage
|
||||
|
||||
Start Odoo including this addon (from repo root):
|
||||
|
||||
```bash
|
||||
python3 scripts/nix_odoo_web_server.py --db-name mydb --addon users_ldap_groups
|
||||
```
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
# Wizards
|
||||
|
||||
This module does not include UI wizards.
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
[project]
|
||||
name = "odoo-bringout-oca-server-auth-users_ldap_groups"
|
||||
version = "16.0.0"
|
||||
description = "LDAP groups assignment - Adds user accounts to groups based on rules defined by the administrator."
|
||||
authors = [
|
||||
{ name = "Ernad Husremovic", email = "hernad@bring.out.ba" }
|
||||
]
|
||||
dependencies = [
|
||||
"odoo-bringout-oca-server-auth-auth_ldap>=16.0.0",
|
||||
"requests>=2.25.1"
|
||||
]
|
||||
readme = "README.md"
|
||||
requires-python = ">= 3.11"
|
||||
classifiers = [
|
||||
"Development Status :: 5 - Production/Stable",
|
||||
"Intended Audience :: Developers",
|
||||
"License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)",
|
||||
"Programming Language :: Python :: 3",
|
||||
"Programming Language :: Python :: 3.11",
|
||||
"Programming Language :: Python :: 3.12",
|
||||
"Topic :: Office/Business",
|
||||
]
|
||||
|
||||
[project.urls]
|
||||
homepage = "https://github.com/bringout/0"
|
||||
repository = "https://github.com/bringout/0"
|
||||
|
||||
[build-system]
|
||||
requires = ["hatchling"]
|
||||
build-backend = "hatchling.build"
|
||||
|
||||
[tool.hatch.metadata]
|
||||
allow-direct-references = true
|
||||
|
||||
[tool.hatch.build.targets.wheel]
|
||||
packages = ["users_ldap_groups"]
|
||||
|
||||
[tool.rye]
|
||||
managed = true
|
||||
dev-dependencies = [
|
||||
"pytest>=8.4.1",
|
||||
]
|
||||
|
|
@ -0,0 +1,109 @@
|
|||
======================
|
||||
LDAP groups assignment
|
||||
======================
|
||||
|
||||
..
|
||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
!! This file is generated by oca-gen-addon-readme !!
|
||||
!! changes will be overwritten. !!
|
||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
!! source digest: sha256:e9016a5e491a0652aa384dd8c4e7ecf8d1091a4d7895f1b720d9a7b84814ab10
|
||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
|
||||
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
|
||||
:target: https://odoo-community.org/page/development-status
|
||||
:alt: Beta
|
||||
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
|
||||
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
|
||||
:alt: License: AGPL-3
|
||||
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fserver--auth-lightgray.png?logo=github
|
||||
:target: https://github.com/OCA/server-auth/tree/16.0/users_ldap_groups
|
||||
:alt: OCA/server-auth
|
||||
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
|
||||
:target: https://translation.odoo-community.org/projects/server-auth-16-0/server-auth-16-0-users_ldap_groups
|
||||
:alt: Translate me on Weblate
|
||||
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
|
||||
:target: https://runboat.odoo-community.org/builds?repo=OCA/server-auth&target_branch=16.0
|
||||
:alt: Try me on Runboat
|
||||
|
||||
|badge1| |badge2| |badge3| |badge4| |badge5|
|
||||
|
||||
.. image:: https://img.shields.io/badge/license-AGPL--3-blue.png
|
||||
:target: https://www.gnu.org/licenses/agpl
|
||||
:alt: License: AGPL-3
|
||||
|
||||
Adds user accounts to groups based on rules defined by the administrator.
|
||||
|
||||
**Table of contents**
|
||||
|
||||
.. contents::
|
||||
:local:
|
||||
|
||||
Usage
|
||||
=====
|
||||
|
||||
Define mappings in Settings / General Settings / Integrations / LDAP Authentication / LDAP Server
|
||||
|
||||
Decide whether you want only groups mapped from LDAP (`Only LDAP groups` checked) or a mix of manually set groups and LDAP groups (`Only LDAP groups` unchecked).
|
||||
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.
|
||||
If set to "Yes", you need to make sure each user has at least on of the "User types" groups
|
||||
|
||||
For active directory, use LDAP attribute 'memberOf' and operator 'contains'. Fill in the DN of the windows group as value and choose an Odoo 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-auth/issues>`_.
|
||||
In case of trouble, please check there if your issue has already been reported.
|
||||
If you spotted it first, help us to smash it by providing a detailed and welcomed
|
||||
`feedback <https://github.com/OCA/server-auth/issues/new?body=module:%20users_ldap_groups%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
|
||||
|
||||
Do not contact contributors directly about support or help with technical issues.
|
||||
|
||||
Credits
|
||||
=======
|
||||
|
||||
Authors
|
||||
~~~~~~~
|
||||
|
||||
* Therp BV
|
||||
|
||||
Contributors
|
||||
~~~~~~~~~~~~
|
||||
|
||||
* Holger Brunn <hbrunn@therp.nl>
|
||||
* Giacomo Spettoli <giacomo.spettoli@gmail.com>
|
||||
* `CorporateHub <https://corporatehub.eu/>`__
|
||||
|
||||
* Alexey Pelykh <alexey.pelykh@corphub.eu>
|
||||
* Tecnativa <https://www.tecnativa.com>
|
||||
|
||||
* João Marques
|
||||
* Carolina Fernandez
|
||||
* Dhara Solanki <dhara.solanki@initos.com>
|
||||
|
||||
Maintainers
|
||||
~~~~~~~~~~~
|
||||
|
||||
This module is maintained by the OCA.
|
||||
|
||||
.. image:: https://odoo-community.org/logo.png
|
||||
:alt: Odoo Community Association
|
||||
:target: https://odoo-community.org
|
||||
|
||||
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.
|
||||
|
||||
This module is part of the `OCA/server-auth <https://github.com/OCA/server-auth/tree/16.0/users_ldap_groups>`_ project on GitHub.
|
||||
|
||||
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
# Copyright 2012-2018 Therp BV <https://therp.nl>
|
||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
|
||||
from . import models
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
# Copyright 2012-2018 Therp BV <https://therp.nl>
|
||||
# Copyright 2018 Brainbean Apps <https://brainbeanapps.com>
|
||||
# Copyright 2021 Tecnativa - João Marques
|
||||
# Copyright 2023 Tecnativa - Carolina Fernandez
|
||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
|
||||
{
|
||||
"name": "LDAP groups assignment",
|
||||
"version": "16.0.1.0.1",
|
||||
"depends": ["auth_ldap"],
|
||||
"author": "Therp BV, " "Odoo Community Association (OCA)",
|
||||
"website": "https://github.com/OCA/server-auth",
|
||||
"license": "AGPL-3",
|
||||
"summary": "Adds user accounts to groups based on rules defined "
|
||||
"by the administrator.",
|
||||
"category": "Authentication",
|
||||
"data": ["views/res_company_ldap_views.xml", "security/ir.model.access.csv"],
|
||||
"external_dependencies": {"python": ["python-ldap"]},
|
||||
}
|
||||
|
|
@ -0,0 +1,157 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * users_ldap_groups
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: \n"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model,name:users_ldap_groups.model_res_company_ldap
|
||||
msgid "Company LDAP configuration"
|
||||
msgstr "LDAP postavke tvrtke"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__create_uid
|
||||
msgid "Created by"
|
||||
msgstr "Kreirao"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__create_date
|
||||
msgid "Created on"
|
||||
msgstr "Kreirano"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,help:users_ldap_groups.field_res_company_ldap__group_mapping_ids
|
||||
msgid "Define how Odoo groups are assigned to LDAP users"
|
||||
msgstr "Definiraj kako su Odoo grupe dodijeljene LDAP korisnicima"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model,name:users_ldap_groups.model_res_company_ldap_operator
|
||||
msgid "Definition op LDAP operations"
|
||||
msgstr "Definicija LDAP operacija"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Naziv"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap__group_mapping_ids
|
||||
msgid "Group mappings"
|
||||
msgstr "Mapiranje grupa"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,help:users_ldap_groups.field_res_company_ldap__only_ldap_groups
|
||||
msgid ""
|
||||
"If this is checked, manual changes to group membership are undone on every "
|
||||
"login (so Odoo groups are always synchronous with LDAP groups). If not, "
|
||||
"manually added groups are preserved."
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__ldap_attribute
|
||||
msgid "LDAP attribute"
|
||||
msgstr "LDAP atribut"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model,name:users_ldap_groups.model_res_company_ldap_group_mapping
|
||||
msgid "LDAP group mapping"
|
||||
msgstr "LDAP mapiranje grupa"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__ldap_id
|
||||
msgid "LDAP server"
|
||||
msgstr "LDAP server"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr "Zadnje modificirano"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr "Zadnje ažurirano"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr "Zadnje ažurirano"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model_terms:ir.ui.view,arch_db:users_ldap_groups.view_ldap_installer_form
|
||||
msgid "Map User Groups"
|
||||
msgstr "Mapiranje korisničkih grupa"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__group_id
|
||||
msgid "Odoo group"
|
||||
msgstr "Odoo grupa"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap__only_ldap_groups
|
||||
msgid "Only LDAP groups"
|
||||
msgstr "Samo LDAP grupe"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__operator
|
||||
msgid "Operator"
|
||||
msgstr "Operater"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,help:users_ldap_groups.field_res_company_ldap_group_mapping__ldap_attribute
|
||||
msgid ""
|
||||
"The LDAP attribute to check.\n"
|
||||
"For active directory, use memberOf."
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,help:users_ldap_groups.field_res_company_ldap_group_mapping__group_id
|
||||
msgid "The Odoo group to assign"
|
||||
msgstr "Odoo grupa za dodelu"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#. odoo-python
|
||||
#: code:addons/users_ldap_groups/models/res_company_ldap.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The created user needs to have one (and only one) of the 'User types /' "
|
||||
"groups defined."
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,help:users_ldap_groups.field_res_company_ldap_group_mapping__operator
|
||||
msgid ""
|
||||
"The operator to check the attribute against the value\n"
|
||||
"For active directory, use 'contains'"
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,help:users_ldap_groups.field_res_company_ldap_group_mapping__value
|
||||
msgid ""
|
||||
"The value to check the attribute against.\n"
|
||||
"For active directory, use the dn of the desired group"
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model,name:users_ldap_groups.model_res_users
|
||||
msgid "User"
|
||||
msgstr "Korisnik"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__value
|
||||
msgid "Value"
|
||||
msgstr "Vrijednost"
|
||||
|
|
@ -0,0 +1,163 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * users_ldap_groups
|
||||
#
|
||||
# Translators:
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: server-tools (8.0)\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-09-29 11:14+0000\n"
|
||||
"PO-Revision-Date: 2015-09-18 13:56+0000\n"
|
||||
"Last-Translator: <>\n"
|
||||
"Language-Team: German (http://www.transifex.com/oca/OCA-server-tools-8-0/"
|
||||
"language/de/)\n"
|
||||
"Language: de\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model,name:users_ldap_groups.model_res_company_ldap
|
||||
msgid "Company LDAP configuration"
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__create_uid
|
||||
msgid "Created by"
|
||||
msgstr "Erstellt von"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__create_date
|
||||
msgid "Created on"
|
||||
msgstr "Erstellt am:"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,help:users_ldap_groups.field_res_company_ldap__group_mapping_ids
|
||||
msgid "Define how Odoo groups are assigned to LDAP users"
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model,name:users_ldap_groups.model_res_company_ldap_operator
|
||||
msgid "Definition op LDAP operations"
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__display_name
|
||||
msgid "Display Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap__group_mapping_ids
|
||||
msgid "Group mappings"
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,help:users_ldap_groups.field_res_company_ldap__only_ldap_groups
|
||||
msgid ""
|
||||
"If this is checked, manual changes to group membership are undone on every "
|
||||
"login (so Odoo groups are always synchronous with LDAP groups). If not, "
|
||||
"manually added groups are preserved."
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__ldap_attribute
|
||||
msgid "LDAP attribute"
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model,name:users_ldap_groups.model_res_company_ldap_group_mapping
|
||||
msgid "LDAP group mapping"
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__ldap_id
|
||||
msgid "LDAP server"
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping____last_update
|
||||
#, fuzzy
|
||||
msgid "Last Modified on"
|
||||
msgstr "Zuletzt aktualisiert am"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr "Zuletzt aktualisiert von"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr "Zuletzt aktualisiert am"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model_terms:ir.ui.view,arch_db:users_ldap_groups.view_ldap_installer_form
|
||||
msgid "Map User Groups"
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__group_id
|
||||
msgid "Odoo group"
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap__only_ldap_groups
|
||||
msgid "Only LDAP groups"
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__operator
|
||||
msgid "Operator"
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,help:users_ldap_groups.field_res_company_ldap_group_mapping__ldap_attribute
|
||||
msgid ""
|
||||
"The LDAP attribute to check.\n"
|
||||
"For active directory, use memberOf."
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,help:users_ldap_groups.field_res_company_ldap_group_mapping__group_id
|
||||
msgid "The Odoo group to assign"
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#. odoo-python
|
||||
#: code:addons/users_ldap_groups/models/res_company_ldap.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The created user needs to have one (and only one) of the 'User types /' "
|
||||
"groups defined."
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,help:users_ldap_groups.field_res_company_ldap_group_mapping__operator
|
||||
msgid ""
|
||||
"The operator to check the attribute against the value\n"
|
||||
"For active directory, use 'contains'"
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,help:users_ldap_groups.field_res_company_ldap_group_mapping__value
|
||||
msgid ""
|
||||
"The value to check the attribute against.\n"
|
||||
"For active directory, use the dn of the desired group"
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model,name:users_ldap_groups.model_res_users
|
||||
msgid "User"
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__value
|
||||
msgid "Value"
|
||||
msgstr ""
|
||||
|
|
@ -0,0 +1,175 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * users_ldap_groups
|
||||
#
|
||||
# Translators:
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: server-tools (8.0)\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-09-29 11:14+0000\n"
|
||||
"PO-Revision-Date: 2023-10-15 19:36+0000\n"
|
||||
"Last-Translator: Ivorra78 <informatica@totmaterial.es>\n"
|
||||
"Language-Team: Spanish (http://www.transifex.com/oca/OCA-server-tools-8-0/"
|
||||
"language/es/)\n"
|
||||
"Language: es\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 4.17\n"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model,name:users_ldap_groups.model_res_company_ldap
|
||||
msgid "Company LDAP configuration"
|
||||
msgstr "Configuración LDAP de la Compañía"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__create_uid
|
||||
msgid "Created by"
|
||||
msgstr "Creado por"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__create_date
|
||||
msgid "Created on"
|
||||
msgstr "Creado en"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,help:users_ldap_groups.field_res_company_ldap__group_mapping_ids
|
||||
msgid "Define how Odoo groups are assigned to LDAP users"
|
||||
msgstr "Definir cómo se asignan los grupos de Odoo a los usuarios LDAP"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model,name:users_ldap_groups.model_res_company_ldap_operator
|
||||
msgid "Definition op LDAP operations"
|
||||
msgstr "Definición de las operaciones LDAP"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Mostrar Nombre"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap__group_mapping_ids
|
||||
msgid "Group mappings"
|
||||
msgstr "Asignaciones de grupos"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,help:users_ldap_groups.field_res_company_ldap__only_ldap_groups
|
||||
msgid ""
|
||||
"If this is checked, manual changes to group membership are undone on every "
|
||||
"login (so Odoo groups are always synchronous with LDAP groups). If not, "
|
||||
"manually added groups are preserved."
|
||||
msgstr ""
|
||||
"Si esta marcada, los cambios manuales en la pertenencia a un grupo se "
|
||||
"deshacen en cada inicio de sesión (por lo que los grupos de Odoo están "
|
||||
"siempre sincronizados con los grupos LDAP). Si no, los grupos añadidos "
|
||||
"manualmente se conservan."
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__ldap_attribute
|
||||
msgid "LDAP attribute"
|
||||
msgstr "Atributo LDAP"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model,name:users_ldap_groups.model_res_company_ldap_group_mapping
|
||||
msgid "LDAP group mapping"
|
||||
msgstr "Asignación de grupos LDAP"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__ldap_id
|
||||
msgid "LDAP server"
|
||||
msgstr "Servidor LDAP"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr "Última Modificación el"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr "Última actualización de"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr "Última actualización en"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model_terms:ir.ui.view,arch_db:users_ldap_groups.view_ldap_installer_form
|
||||
msgid "Map User Groups"
|
||||
msgstr "Mapa de grupos de usuarios"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__group_id
|
||||
msgid "Odoo group"
|
||||
msgstr "Grupo Odoo"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap__only_ldap_groups
|
||||
msgid "Only LDAP groups"
|
||||
msgstr "Sólo grupos LDAP"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__operator
|
||||
msgid "Operator"
|
||||
msgstr "Operador"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,help:users_ldap_groups.field_res_company_ldap_group_mapping__ldap_attribute
|
||||
msgid ""
|
||||
"The LDAP attribute to check.\n"
|
||||
"For active directory, use memberOf."
|
||||
msgstr ""
|
||||
"El atributo LDAP a comprobar.\n"
|
||||
"En ActiveDirectory, use \"memberOf\"."
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,help:users_ldap_groups.field_res_company_ldap_group_mapping__group_id
|
||||
msgid "The Odoo group to assign"
|
||||
msgstr "El grupo Odoo a asignar"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#. odoo-python
|
||||
#: code:addons/users_ldap_groups/models/res_company_ldap.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The created user needs to have one (and only one) of the 'User types /' "
|
||||
"groups defined."
|
||||
msgstr ""
|
||||
"El usuario creado necesita tener definido uno (y sólo uno) de los grupos "
|
||||
"'Tipos de usuario /'."
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,help:users_ldap_groups.field_res_company_ldap_group_mapping__operator
|
||||
msgid ""
|
||||
"The operator to check the attribute against the value\n"
|
||||
"For active directory, use 'contains'"
|
||||
msgstr ""
|
||||
"El operador para cotejar el atributo con el valor\n"
|
||||
"Para active directory, utilice 'contains"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,help:users_ldap_groups.field_res_company_ldap_group_mapping__value
|
||||
msgid ""
|
||||
"The value to check the attribute against.\n"
|
||||
"For active directory, use the dn of the desired group"
|
||||
msgstr ""
|
||||
"El valor con el que se comprobará el atributo.\n"
|
||||
"Para active directory, utilice el dn del grupo deseado"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model,name:users_ldap_groups.model_res_users
|
||||
msgid "User"
|
||||
msgstr "Usuario"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__value
|
||||
msgid "Value"
|
||||
msgstr "Valor"
|
||||
|
|
@ -0,0 +1,181 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * users_ldap_groups
|
||||
#
|
||||
# Translators:
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: server-tools (8.0)\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-09-29 11:14+0000\n"
|
||||
"PO-Revision-Date: 2018-12-12 19:58+0000\n"
|
||||
"Last-Translator: Alexandre Fayolle <alexandre.fayolle@camptocamp.com>\n"
|
||||
"Language-Team: French (http://www.transifex.com/oca/OCA-server-tools-8-0/"
|
||||
"language/fr/)\n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
||||
"X-Generator: Weblate 3.3\n"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model,name:users_ldap_groups.model_res_company_ldap
|
||||
msgid "Company LDAP configuration"
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__create_uid
|
||||
msgid "Created by"
|
||||
msgstr "Créé par"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__create_date
|
||||
msgid "Created on"
|
||||
msgstr "Créé le"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,help:users_ldap_groups.field_res_company_ldap__group_mapping_ids
|
||||
msgid "Define how Odoo groups are assigned to LDAP users"
|
||||
msgstr "Définir comment les groupes Odoo sont attribués aux utilisateurs LDAP"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model,name:users_ldap_groups.model_res_company_ldap_operator
|
||||
msgid "Definition op LDAP operations"
|
||||
msgstr "Définition des opérations LDAP"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Nom affiché"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap__group_mapping_ids
|
||||
msgid "Group mappings"
|
||||
msgstr "Tableau de conversion des groupes"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,help:users_ldap_groups.field_res_company_ldap__only_ldap_groups
|
||||
msgid ""
|
||||
"If this is checked, manual changes to group membership are undone on every "
|
||||
"login (so Odoo groups are always synchronous with LDAP groups). If not, "
|
||||
"manually added groups are preserved."
|
||||
msgstr ""
|
||||
"Si activé, les configuration manuelles de groupes sont annulées à chaque "
|
||||
"connexion (et donc les groupes Odoo sont toujours synchrones avec les "
|
||||
"groupes LDAP). Sinon, les affectations manuelles de groupes sont préservées."
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__ldap_attribute
|
||||
msgid "LDAP attribute"
|
||||
msgstr "Attributs LDAP"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model,name:users_ldap_groups.model_res_company_ldap_group_mapping
|
||||
msgid "LDAP group mapping"
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__ldap_id
|
||||
msgid "LDAP server"
|
||||
msgstr "Serveur LDAP"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr "Dernière mise à jour le"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr "Dernière mise à jour par"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr "Dernière mise à jour le"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model_terms:ir.ui.view,arch_db:users_ldap_groups.view_ldap_installer_form
|
||||
msgid "Map User Groups"
|
||||
msgstr "Conversions de groupes utilisateurs"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__group_id
|
||||
msgid "Odoo group"
|
||||
msgstr "Groupe Odoo"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap__only_ldap_groups
|
||||
msgid "Only LDAP groups"
|
||||
msgstr "Uniquement les groupes LDAP"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__operator
|
||||
msgid "Operator"
|
||||
msgstr "Opérateur"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,help:users_ldap_groups.field_res_company_ldap_group_mapping__ldap_attribute
|
||||
msgid ""
|
||||
"The LDAP attribute to check.\n"
|
||||
"For active directory, use memberOf."
|
||||
msgstr ""
|
||||
"L'attribut LDAP à vérifier.\n"
|
||||
"Pour Active Directory, utiliser memberOf."
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,help:users_ldap_groups.field_res_company_ldap_group_mapping__group_id
|
||||
msgid "The Odoo group to assign"
|
||||
msgstr "Groupe Odoo à assigner"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#. odoo-python
|
||||
#: code:addons/users_ldap_groups/models/res_company_ldap.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The created user needs to have one (and only one) of the 'User types /' "
|
||||
"groups defined."
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,help:users_ldap_groups.field_res_company_ldap_group_mapping__operator
|
||||
msgid ""
|
||||
"The operator to check the attribute against the value\n"
|
||||
"For active directory, use 'contains'"
|
||||
msgstr ""
|
||||
"L'opérateur à utiliser pour vérifier la valeur de l'attribut.\n"
|
||||
"Pour Active Directory, utilisez 'contains'."
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,help:users_ldap_groups.field_res_company_ldap_group_mapping__value
|
||||
msgid ""
|
||||
"The value to check the attribute against.\n"
|
||||
"For active directory, use the dn of the desired group"
|
||||
msgstr ""
|
||||
"La valeur à comparer à l'attribut.\n"
|
||||
"Pour Active Directory, utilisez le dn du groupe souhaité."
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model,name:users_ldap_groups.model_res_users
|
||||
msgid "User"
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__value
|
||||
msgid "Value"
|
||||
msgstr "Valeur"
|
||||
|
||||
#~ msgid "Users"
|
||||
#~ msgstr "Utilisateurs"
|
||||
|
||||
#~ msgid "res.company.ldap"
|
||||
#~ msgstr "res.company.ldap"
|
||||
|
||||
#~ msgid "res.company.ldap.group_mapping"
|
||||
#~ msgstr "res.company.ldap.group_mapping"
|
||||
|
|
@ -0,0 +1,162 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * users_ldap_groups
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 10.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2019-11-13 17:34+0000\n"
|
||||
"Last-Translator: Bole <bole@dajmi5.com>\n"
|
||||
"Language-Team: none\n"
|
||||
"Language: hr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
||||
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
|
||||
"X-Generator: Weblate 3.8\n"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model,name:users_ldap_groups.model_res_company_ldap
|
||||
msgid "Company LDAP configuration"
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__create_uid
|
||||
msgid "Created by"
|
||||
msgstr "Kreirao"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__create_date
|
||||
msgid "Created on"
|
||||
msgstr "Kreirano"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,help:users_ldap_groups.field_res_company_ldap__group_mapping_ids
|
||||
msgid "Define how Odoo groups are assigned to LDAP users"
|
||||
msgstr "Definiraj kako su Odoo grupe dodijeljene LDAP korisnicima"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model,name:users_ldap_groups.model_res_company_ldap_operator
|
||||
msgid "Definition op LDAP operations"
|
||||
msgstr "Definicija LDAP operacija"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Naziv"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap__group_mapping_ids
|
||||
msgid "Group mappings"
|
||||
msgstr "Mapiranje grupa"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__id
|
||||
#, fuzzy
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,help:users_ldap_groups.field_res_company_ldap__only_ldap_groups
|
||||
msgid ""
|
||||
"If this is checked, manual changes to group membership are undone on every "
|
||||
"login (so Odoo groups are always synchronous with LDAP groups). If not, "
|
||||
"manually added groups are preserved."
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__ldap_attribute
|
||||
msgid "LDAP attribute"
|
||||
msgstr "LDAP atribut"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model,name:users_ldap_groups.model_res_company_ldap_group_mapping
|
||||
msgid "LDAP group mapping"
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__ldap_id
|
||||
msgid "LDAP server"
|
||||
msgstr "LDAP server"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr "Zadnje modificirano"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr "Zadnje ažurirano"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model_terms:ir.ui.view,arch_db:users_ldap_groups.view_ldap_installer_form
|
||||
msgid "Map User Groups"
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__group_id
|
||||
msgid "Odoo group"
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap__only_ldap_groups
|
||||
msgid "Only LDAP groups"
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__operator
|
||||
msgid "Operator"
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,help:users_ldap_groups.field_res_company_ldap_group_mapping__ldap_attribute
|
||||
msgid ""
|
||||
"The LDAP attribute to check.\n"
|
||||
"For active directory, use memberOf."
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,help:users_ldap_groups.field_res_company_ldap_group_mapping__group_id
|
||||
msgid "The Odoo group to assign"
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#. odoo-python
|
||||
#: code:addons/users_ldap_groups/models/res_company_ldap.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The created user needs to have one (and only one) of the 'User types /' "
|
||||
"groups defined."
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,help:users_ldap_groups.field_res_company_ldap_group_mapping__operator
|
||||
msgid ""
|
||||
"The operator to check the attribute against the value\n"
|
||||
"For active directory, use 'contains'"
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,help:users_ldap_groups.field_res_company_ldap_group_mapping__value
|
||||
msgid ""
|
||||
"The value to check the attribute against.\n"
|
||||
"For active directory, use the dn of the desired group"
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model,name:users_ldap_groups.model_res_users
|
||||
msgid "User"
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__value
|
||||
msgid "Value"
|
||||
msgstr ""
|
||||
|
|
@ -0,0 +1,174 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * users_ldap_groups
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 14.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2024-01-03 14:33+0000\n"
|
||||
"Last-Translator: mymage <stefano.consolaro@mymage.it>\n"
|
||||
"Language-Team: none\n"
|
||||
"Language: it\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 4.17\n"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model,name:users_ldap_groups.model_res_company_ldap
|
||||
msgid "Company LDAP configuration"
|
||||
msgstr "Configurazione LDAP azienda"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__create_uid
|
||||
msgid "Created by"
|
||||
msgstr "Creato da"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__create_date
|
||||
msgid "Created on"
|
||||
msgstr "Creato il"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,help:users_ldap_groups.field_res_company_ldap__group_mapping_ids
|
||||
msgid "Define how Odoo groups are assigned to LDAP users"
|
||||
msgstr "Indica come assegnare i gruppi Odoo agli utenti LDAP"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model,name:users_ldap_groups.model_res_company_ldap_operator
|
||||
msgid "Definition op LDAP operations"
|
||||
msgstr "Definizione delle operazioni LDAP"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Nome visualizzato"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap__group_mapping_ids
|
||||
msgid "Group mappings"
|
||||
msgstr "Mappature gruppi"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,help:users_ldap_groups.field_res_company_ldap__only_ldap_groups
|
||||
msgid ""
|
||||
"If this is checked, manual changes to group membership are undone on every "
|
||||
"login (so Odoo groups are always synchronous with LDAP groups). If not, "
|
||||
"manually added groups are preserved."
|
||||
msgstr ""
|
||||
"Se selezionata, le modifiche manuali di appartenenza a un gruppo vengono "
|
||||
"annullate ad ogni accesso (in questo modo i gruppi Odoo restano sempre "
|
||||
"sincronizzati con quelli LDAP). In caso contrario, vengono confermate."
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__ldap_attribute
|
||||
msgid "LDAP attribute"
|
||||
msgstr "Attributo LDAP"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model,name:users_ldap_groups.model_res_company_ldap_group_mapping
|
||||
msgid "LDAP group mapping"
|
||||
msgstr "Mappatura gruppi LDAP"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__ldap_id
|
||||
msgid "LDAP server"
|
||||
msgstr "Server LDAP"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr "Ultima modifica il"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr "Ultimo aggiornamento di"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr "Ultimo aggiornamento il"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model_terms:ir.ui.view,arch_db:users_ldap_groups.view_ldap_installer_form
|
||||
msgid "Map User Groups"
|
||||
msgstr "Mappa gruppi utente"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__group_id
|
||||
msgid "Odoo group"
|
||||
msgstr "Gruppo Odoo"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap__only_ldap_groups
|
||||
msgid "Only LDAP groups"
|
||||
msgstr "Solo gruppi LDAP"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__operator
|
||||
msgid "Operator"
|
||||
msgstr "Operatore"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,help:users_ldap_groups.field_res_company_ldap_group_mapping__ldap_attribute
|
||||
msgid ""
|
||||
"The LDAP attribute to check.\n"
|
||||
"For active directory, use memberOf."
|
||||
msgstr ""
|
||||
"Attributo LDAP da controllare.\n"
|
||||
"Per Active Directory utilizzare memberOf."
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,help:users_ldap_groups.field_res_company_ldap_group_mapping__group_id
|
||||
msgid "The Odoo group to assign"
|
||||
msgstr "Il gruppo Odoo da assegnare"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#. odoo-python
|
||||
#: code:addons/users_ldap_groups/models/res_company_ldap.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The created user needs to have one (and only one) of the 'User types /' "
|
||||
"groups defined."
|
||||
msgstr ""
|
||||
"Per l'utente creato è necessario indicare uno dei gruppi \"Tipologie utente/"
|
||||
"\" (e solo uno)."
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,help:users_ldap_groups.field_res_company_ldap_group_mapping__operator
|
||||
msgid ""
|
||||
"The operator to check the attribute against the value\n"
|
||||
"For active directory, use 'contains'"
|
||||
msgstr ""
|
||||
"Operatore di confronto tra attributo e valore\n"
|
||||
"Per Active Directory utilizzare \"contiene\""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,help:users_ldap_groups.field_res_company_ldap_group_mapping__value
|
||||
msgid ""
|
||||
"The value to check the attribute against.\n"
|
||||
"For active directory, use the dn of the desired group"
|
||||
msgstr ""
|
||||
"Valore di confronto per l'attributo.\n"
|
||||
"Per Active Directory utilizzare il dn del gruppo desiderato"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model,name:users_ldap_groups.model_res_users
|
||||
msgid "User"
|
||||
msgstr "Utente"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__value
|
||||
msgid "Value"
|
||||
msgstr "Valore"
|
||||
|
||||
#~ msgid "Users"
|
||||
#~ msgstr "Utenti"
|
||||
|
|
@ -0,0 +1,188 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * users_ldap_groups
|
||||
#
|
||||
# Translators:
|
||||
# Armando Vulcano Junior <vulcano@uol.com.br>, 2015
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: server-tools (8.0)\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-09-29 11:14+0000\n"
|
||||
"PO-Revision-Date: 2024-05-22 02:02+0000\n"
|
||||
"Last-Translator: Rodrigo Macedo <sottomaiormacedotec@users.noreply."
|
||||
"translation.odoo-community.org>\n"
|
||||
"Language-Team: Portuguese (Brazil) (http://www.transifex.com/oca/"
|
||||
"OCA-server-tools-8-0/language/pt_BR/)\n"
|
||||
"Language: pt_BR\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
||||
"X-Generator: Weblate 4.17\n"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model,name:users_ldap_groups.model_res_company_ldap
|
||||
msgid "Company LDAP configuration"
|
||||
msgstr "Configuração LDAP da empresa"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__create_uid
|
||||
msgid "Created by"
|
||||
msgstr "Criado por"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__create_date
|
||||
msgid "Created on"
|
||||
msgstr "Criado em"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,help:users_ldap_groups.field_res_company_ldap__group_mapping_ids
|
||||
msgid "Define how Odoo groups are assigned to LDAP users"
|
||||
msgstr "Define como grupos Odoo são atribuídos aos usuários LDAP"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model,name:users_ldap_groups.model_res_company_ldap_operator
|
||||
msgid "Definition op LDAP operations"
|
||||
msgstr "Definição de operações LDAP"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Exibir Nome"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap__group_mapping_ids
|
||||
msgid "Group mappings"
|
||||
msgstr "Mapeamento de Grupos"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__id
|
||||
msgid "ID"
|
||||
msgstr "Identificação"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,help:users_ldap_groups.field_res_company_ldap__only_ldap_groups
|
||||
msgid ""
|
||||
"If this is checked, manual changes to group membership are undone on every "
|
||||
"login (so Odoo groups are always synchronous with LDAP groups). If not, "
|
||||
"manually added groups are preserved."
|
||||
msgstr ""
|
||||
"Se esta opção for marcada, as alterações manuais para participação no grupo "
|
||||
"são desfeitas em cada login (grupos para Odoo estão sempre em sincronia com "
|
||||
"grupos LDAP). Se não, grupos adicionados manualmente serão preservados."
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__ldap_attribute
|
||||
msgid "LDAP attribute"
|
||||
msgstr "Atributo LDAP"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model,name:users_ldap_groups.model_res_company_ldap_group_mapping
|
||||
msgid "LDAP group mapping"
|
||||
msgstr "Mapeamento de grupo LDAP"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__ldap_id
|
||||
msgid "LDAP server"
|
||||
msgstr "Servidor LDAP"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr "Última Modificação em"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr "Última atualização por"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr "Última atualização em"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model_terms:ir.ui.view,arch_db:users_ldap_groups.view_ldap_installer_form
|
||||
msgid "Map User Groups"
|
||||
msgstr "Mapear Grupos de Usuários"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__group_id
|
||||
msgid "Odoo group"
|
||||
msgstr "Grupo Odoo"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap__only_ldap_groups
|
||||
msgid "Only LDAP groups"
|
||||
msgstr "Apenas grupos ldap"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__operator
|
||||
msgid "Operator"
|
||||
msgstr "Operador"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,help:users_ldap_groups.field_res_company_ldap_group_mapping__ldap_attribute
|
||||
msgid ""
|
||||
"The LDAP attribute to check.\n"
|
||||
"For active directory, use memberOf."
|
||||
msgstr ""
|
||||
"O atributo LDAP para checar\n"
|
||||
"Para active directory, use memberOf."
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,help:users_ldap_groups.field_res_company_ldap_group_mapping__group_id
|
||||
msgid "The Odoo group to assign"
|
||||
msgstr "Grupo Odoo para atribuir"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#. odoo-python
|
||||
#: code:addons/users_ldap_groups/models/res_company_ldap.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The created user needs to have one (and only one) of the 'User types /' "
|
||||
"groups defined."
|
||||
msgstr ""
|
||||
"O usuário criado precisa ter um (e apenas um) dos grupos 'Tipos de usuário/' "
|
||||
"definidos."
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,help:users_ldap_groups.field_res_company_ldap_group_mapping__operator
|
||||
msgid ""
|
||||
"The operator to check the attribute against the value\n"
|
||||
"For active directory, use 'contains'"
|
||||
msgstr ""
|
||||
"O operador para verificar o atributo contra o valor\n"
|
||||
"Para active directory, use 'contains'"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,help:users_ldap_groups.field_res_company_ldap_group_mapping__value
|
||||
msgid ""
|
||||
"The value to check the attribute against.\n"
|
||||
"For active directory, use the dn of the desired group"
|
||||
msgstr ""
|
||||
"O valor para verificar contra o atributo\n"
|
||||
"Para active directory, use de dn do grupo desejado"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model,name:users_ldap_groups.model_res_users
|
||||
msgid "User"
|
||||
msgstr "Usuário"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__value
|
||||
msgid "Value"
|
||||
msgstr "Valor"
|
||||
|
||||
#~ msgid "Users"
|
||||
#~ msgstr "Usuários"
|
||||
|
||||
#~ msgid "res.company.ldap"
|
||||
#~ msgstr "res.company.ldap"
|
||||
|
||||
#~ msgid "res.company.ldap.group_mapping"
|
||||
#~ msgstr "res.company.ldap.group_mapping"
|
||||
|
||||
#~ msgid "OpenERP group"
|
||||
#~ msgstr "Grupo OpenERP"
|
||||
|
|
@ -0,0 +1,186 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * users_ldap_groups
|
||||
#
|
||||
# Translators:
|
||||
# Matjaž Mozetič <m.mozetic@matmoz.si>, 2015
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: server-tools (8.0)\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-09-29 11:14+0000\n"
|
||||
"PO-Revision-Date: 2020-04-13 16:19+0000\n"
|
||||
"Last-Translator: Matjaz Mozetic <matjaz@matmoz.si>\n"
|
||||
"Language-Team: Slovenian (http://www.transifex.com/oca/OCA-server-tools-8-0/"
|
||||
"language/sl/)\n"
|
||||
"Language: sl\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n"
|
||||
"%100==4 ? 2 : 3;\n"
|
||||
"X-Generator: Weblate 3.10\n"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model,name:users_ldap_groups.model_res_company_ldap
|
||||
msgid "Company LDAP configuration"
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__create_uid
|
||||
msgid "Created by"
|
||||
msgstr "Ustvaril"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__create_date
|
||||
msgid "Created on"
|
||||
msgstr "Ustvarjeno"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,help:users_ldap_groups.field_res_company_ldap__group_mapping_ids
|
||||
msgid "Define how Odoo groups are assigned to LDAP users"
|
||||
msgstr "Določi način dodeljevanja Odoo skupin LDAP uporabnikom"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model,name:users_ldap_groups.model_res_company_ldap_operator
|
||||
msgid "Definition op LDAP operations"
|
||||
msgstr "Definicija LDAP operacij"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Prikazani naziv"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap__group_mapping_ids
|
||||
msgid "Group mappings"
|
||||
msgstr "Mapiranja skupin"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,help:users_ldap_groups.field_res_company_ldap__only_ldap_groups
|
||||
msgid ""
|
||||
"If this is checked, manual changes to group membership are undone on every "
|
||||
"login (so Odoo groups are always synchronous with LDAP groups). If not, "
|
||||
"manually added groups are preserved."
|
||||
msgstr ""
|
||||
"Če označeno, so vse ročne spremembe članov skupin prezrte ob vsaki prijavi "
|
||||
"(tako so Odoo skupine vedno sinhrone z LDAP skupinami). Če ni, se ročno "
|
||||
"dodane skupine ohranijo."
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__ldap_attribute
|
||||
msgid "LDAP attribute"
|
||||
msgstr "LDAP atribut"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model,name:users_ldap_groups.model_res_company_ldap_group_mapping
|
||||
msgid "LDAP group mapping"
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__ldap_id
|
||||
msgid "LDAP server"
|
||||
msgstr "LDAP strežnik"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr "Zadnjič spremenjeno"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr "Zadnji posodobil"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr "Zadnjič posodobljeno"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model_terms:ir.ui.view,arch_db:users_ldap_groups.view_ldap_installer_form
|
||||
msgid "Map User Groups"
|
||||
msgstr "Mapiraj uporabniške skupine"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__group_id
|
||||
msgid "Odoo group"
|
||||
msgstr "Odoo skupina"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap__only_ldap_groups
|
||||
msgid "Only LDAP groups"
|
||||
msgstr "Samo LDAP skupine"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__operator
|
||||
msgid "Operator"
|
||||
msgstr "Operater"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,help:users_ldap_groups.field_res_company_ldap_group_mapping__ldap_attribute
|
||||
msgid ""
|
||||
"The LDAP attribute to check.\n"
|
||||
"For active directory, use memberOf."
|
||||
msgstr ""
|
||||
"LDAP atribut za preverjanje.\n"
|
||||
"Za aktivni imenik uporabite memberOf."
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,help:users_ldap_groups.field_res_company_ldap_group_mapping__group_id
|
||||
msgid "The Odoo group to assign"
|
||||
msgstr "Odoo skupina za dodelitev"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#. odoo-python
|
||||
#: code:addons/users_ldap_groups/models/res_company_ldap.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The created user needs to have one (and only one) of the 'User types /' "
|
||||
"groups defined."
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,help:users_ldap_groups.field_res_company_ldap_group_mapping__operator
|
||||
msgid ""
|
||||
"The operator to check the attribute against the value\n"
|
||||
"For active directory, use 'contains'"
|
||||
msgstr ""
|
||||
"Operater za primerjavo atributa z vrednostjo\n"
|
||||
"za aktivni imenik, uporabite 'contains'"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,help:users_ldap_groups.field_res_company_ldap_group_mapping__value
|
||||
msgid ""
|
||||
"The value to check the attribute against.\n"
|
||||
"For active directory, use the dn of the desired group"
|
||||
msgstr ""
|
||||
"Vrednost za primerjavo atributa.\n"
|
||||
"Za aktivni imenik uporabite dn željene skupine"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model,name:users_ldap_groups.model_res_users
|
||||
msgid "User"
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__value
|
||||
msgid "Value"
|
||||
msgstr "Vrednost"
|
||||
|
||||
#~ msgid "Users"
|
||||
#~ msgstr "Uporabniki"
|
||||
|
||||
#~ msgid "res.company.ldap"
|
||||
#~ msgstr "res.company.ldap"
|
||||
|
||||
#~ msgid "res.company.ldap.group_mapping"
|
||||
#~ msgstr "res.company.ldap.group_mapping"
|
||||
|
||||
#~ msgid "OpenERP group"
|
||||
#~ msgstr "OpenERP skupine"
|
||||
|
|
@ -0,0 +1,157 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * users_ldap_groups
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: \n"
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model,name:users_ldap_groups.model_res_company_ldap
|
||||
msgid "Company LDAP configuration"
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__create_uid
|
||||
msgid "Created by"
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__create_date
|
||||
msgid "Created on"
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,help:users_ldap_groups.field_res_company_ldap__group_mapping_ids
|
||||
msgid "Define how Odoo groups are assigned to LDAP users"
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model,name:users_ldap_groups.model_res_company_ldap_operator
|
||||
msgid "Definition op LDAP operations"
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__display_name
|
||||
msgid "Display Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap__group_mapping_ids
|
||||
msgid "Group mappings"
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__id
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,help:users_ldap_groups.field_res_company_ldap__only_ldap_groups
|
||||
msgid ""
|
||||
"If this is checked, manual changes to group membership are undone on every "
|
||||
"login (so Odoo groups are always synchronous with LDAP groups). If not, "
|
||||
"manually added groups are preserved."
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__ldap_attribute
|
||||
msgid "LDAP attribute"
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model,name:users_ldap_groups.model_res_company_ldap_group_mapping
|
||||
msgid "LDAP group mapping"
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__ldap_id
|
||||
msgid "LDAP server"
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model_terms:ir.ui.view,arch_db:users_ldap_groups.view_ldap_installer_form
|
||||
msgid "Map User Groups"
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__group_id
|
||||
msgid "Odoo group"
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap__only_ldap_groups
|
||||
msgid "Only LDAP groups"
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__operator
|
||||
msgid "Operator"
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,help:users_ldap_groups.field_res_company_ldap_group_mapping__ldap_attribute
|
||||
msgid ""
|
||||
"The LDAP attribute to check.\n"
|
||||
"For active directory, use memberOf."
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,help:users_ldap_groups.field_res_company_ldap_group_mapping__group_id
|
||||
msgid "The Odoo group to assign"
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#. odoo-python
|
||||
#: code:addons/users_ldap_groups/models/res_company_ldap.py:0
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The created user needs to have one (and only one) of the 'User types /' "
|
||||
"groups defined."
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,help:users_ldap_groups.field_res_company_ldap_group_mapping__operator
|
||||
msgid ""
|
||||
"The operator to check the attribute against the value\n"
|
||||
"For active directory, use 'contains'"
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,help:users_ldap_groups.field_res_company_ldap_group_mapping__value
|
||||
msgid ""
|
||||
"The value to check the attribute against.\n"
|
||||
"For active directory, use the dn of the desired group"
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model,name:users_ldap_groups.model_res_users
|
||||
msgid "User"
|
||||
msgstr ""
|
||||
|
||||
#. module: users_ldap_groups
|
||||
#: model:ir.model.fields,field_description:users_ldap_groups.field_res_company_ldap_group_mapping__value
|
||||
msgid "Value"
|
||||
msgstr ""
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
|
||||
from . import res_company_ldap
|
||||
from . import res_company_ldap_operator
|
||||
from . import res_company_ldap_group_mapping
|
||||
from . import res_users
|
||||
|
|
@ -0,0 +1,72 @@
|
|||
# Copyright 2012-2018 Therp BV <https://therp.nl>
|
||||
# Copyright 2018 Brainbean Apps <https://brainbeanapps.com>
|
||||
# Copyright 2021 Tecnativa - João Marques
|
||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
|
||||
from logging import getLogger
|
||||
|
||||
from odoo import _, api, fields, models
|
||||
from odoo.exceptions import UserError
|
||||
|
||||
_logger = getLogger(__name__)
|
||||
|
||||
|
||||
class ResCompanyLdap(models.Model):
|
||||
_inherit = "res.company.ldap"
|
||||
|
||||
group_mapping_ids = fields.One2many(
|
||||
"res.company.ldap.group_mapping",
|
||||
"ldap_id",
|
||||
"Group mappings",
|
||||
help="Define how Odoo groups are assigned to LDAP users",
|
||||
)
|
||||
only_ldap_groups = fields.Boolean(
|
||||
"Only LDAP groups",
|
||||
default=False,
|
||||
help=(
|
||||
"If this is checked, manual changes to group membership are "
|
||||
"undone on every login (so Odoo groups are always synchronous "
|
||||
"with LDAP groups). If not, manually added groups are preserved."
|
||||
),
|
||||
)
|
||||
|
||||
@api.model
|
||||
def _get_or_create_user(self, conf, login, ldap_entry):
|
||||
op_obj = self.env["res.company.ldap.operator"]
|
||||
user_id = super()._get_or_create_user(conf, login, ldap_entry)
|
||||
if not user_id:
|
||||
return user_id
|
||||
this = self.browse(conf["id"])
|
||||
SudoUser = self.env["res.users"].sudo().with_context(no_reset_password=True)
|
||||
user = SudoUser.browse(user_id)
|
||||
essential_groups = [
|
||||
self.env.ref("base.group_user").id,
|
||||
self.env.ref("base.group_portal").id,
|
||||
self.env.ref("base.group_public").id,
|
||||
]
|
||||
groups = []
|
||||
if this.only_ldap_groups:
|
||||
_logger.debug("deleting all groups from user %d", user_id)
|
||||
groups.append((5, False, False))
|
||||
for mapping in this.group_mapping_ids:
|
||||
operator = getattr(op_obj, f"_{mapping.operator}")
|
||||
_logger.debug("checking mapping %s", mapping)
|
||||
if operator(ldap_entry, mapping):
|
||||
_logger.debug(
|
||||
"adding user %d to group %s",
|
||||
user,
|
||||
mapping.group_id.name,
|
||||
)
|
||||
groups.append((4, mapping.group_id.id, False))
|
||||
if (
|
||||
this.only_ldap_groups
|
||||
and len([g[1] for g in groups if g[0] == 4 and g[1] in essential_groups])
|
||||
!= 1
|
||||
):
|
||||
raise UserError(
|
||||
_(
|
||||
"The created user needs to have one (and only one) of the"
|
||||
" 'User types /' groups defined."
|
||||
)
|
||||
)
|
||||
user.write({"groups_id": groups})
|
||||
return user_id
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
# Copyright 2012-2018 Therp BV <https://therp.nl>
|
||||
# Copyright 2018 Brainbean Apps <https://brainbeanapps.com>
|
||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
|
||||
from odoo import fields, models
|
||||
|
||||
|
||||
class ResCompanyLdapGroupMapping(models.Model):
|
||||
_name = "res.company.ldap.group_mapping"
|
||||
_description = "LDAP group mapping"
|
||||
_rec_name = "ldap_attribute"
|
||||
_order = "ldap_attribute"
|
||||
|
||||
ldap_id = fields.Many2one(
|
||||
"res.company.ldap",
|
||||
"LDAP server",
|
||||
required=True,
|
||||
ondelete="cascade",
|
||||
)
|
||||
ldap_attribute = fields.Char(
|
||||
"LDAP attribute",
|
||||
help=("The LDAP attribute to check.\nFor active directory, use memberOf."),
|
||||
)
|
||||
operator = fields.Selection(
|
||||
lambda self: [
|
||||
(o, o) for o in self.env["res.company.ldap.operator"].operators()
|
||||
],
|
||||
help=(
|
||||
"The operator to check the attribute against the value\n"
|
||||
"For active directory, use 'contains'"
|
||||
),
|
||||
required=True,
|
||||
)
|
||||
value = fields.Char(
|
||||
help=(
|
||||
"The value to check the attribute against.\n"
|
||||
"For active directory, use the dn of the desired group"
|
||||
),
|
||||
required=True,
|
||||
)
|
||||
group_id = fields.Many2one(
|
||||
"res.groups", "Odoo group", help="The Odoo group to assign", required=True
|
||||
)
|
||||
|
|
@ -0,0 +1,59 @@
|
|||
# Copyright 2012-2018 Therp BV <https://therp.nl>
|
||||
# Copyright 2018 Brainbean Apps <https://brainbeanapps.com>
|
||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
|
||||
import base64
|
||||
from logging import getLogger
|
||||
from string import Template
|
||||
|
||||
from odoo import api, models
|
||||
|
||||
_logger = getLogger(__name__)
|
||||
|
||||
|
||||
class ResCompanyLdapOperator(models.AbstractModel):
|
||||
"""Define operators for group mappings"""
|
||||
|
||||
_name = "res.company.ldap.operator"
|
||||
_description = "Definition op LDAP operations"
|
||||
|
||||
@api.model
|
||||
def operators(self):
|
||||
"""Return names (without '_') of function to call on this model as operator"""
|
||||
return ("contains", "equals", "query")
|
||||
|
||||
def _contains(self, ldap_entry, mapping):
|
||||
return mapping.ldap_attribute in ldap_entry[1] and mapping.value in map(
|
||||
lambda x: x.decode(), ldap_entry[1][mapping.ldap_attribute]
|
||||
)
|
||||
|
||||
def _equals(self, ldap_entry, mapping):
|
||||
return mapping.ldap_attribute in ldap_entry[1] and mapping.value == str(
|
||||
list(map(lambda x: x.decode(), ldap_entry[1][mapping.ldap_attribute]))
|
||||
)
|
||||
|
||||
def _query(self, ldap_entry, mapping):
|
||||
query_string = Template(mapping.value).safe_substitute(
|
||||
{
|
||||
attr: self.safe_ldap_decode(ldap_entry[1][attr][0])
|
||||
for attr in ldap_entry[1]
|
||||
}
|
||||
)
|
||||
|
||||
results = mapping.ldap_id._query(mapping.ldap_id.read()[0], query_string)
|
||||
_logger.debug('Performed LDAP query "%s" results: %s', query_string, results)
|
||||
|
||||
return bool(results)
|
||||
|
||||
def safe_ldap_decode(self, attr):
|
||||
"""Safe LDAP decode; Base64 encode attributes containing binary data.
|
||||
Binary data can be stored in Active Directory, e.g., thumbnailPhoto is
|
||||
stored as binary. As Str.decoce() cannot handle binary, this method
|
||||
Base64 encodes the data in the attribute, instead, if decode fails.
|
||||
Using Base64 should be a suitable fallback, because the use cases of
|
||||
users_ldap_groups do not really require comparing binary attributes.
|
||||
"""
|
||||
|
||||
try:
|
||||
return attr.decode()
|
||||
except UnicodeDecodeError:
|
||||
return base64.b64encode(attr)
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
# Copyright 2018 Therp BV <https://therp.nl>
|
||||
# Copyright 2018 Brainbean Apps <https://brainbeanapps.com>
|
||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
|
||||
from odoo import SUPERUSER_ID, api, models, registry
|
||||
|
||||
|
||||
class ResUsers(models.Model):
|
||||
_inherit = "res.users"
|
||||
|
||||
@classmethod
|
||||
def _login(cls, db, login, password, user_agent_env):
|
||||
user_id = super()._login(db, login, password, user_agent_env)
|
||||
if not user_id:
|
||||
return user_id
|
||||
with registry(db).cursor() as cr:
|
||||
env = api.Environment(cr, SUPERUSER_ID, {})
|
||||
user = env["res.users"].browse(user_id)
|
||||
# check if this user came from ldap, rerun get_or_create_user in
|
||||
# this case to apply ldap groups if necessary
|
||||
ldaps = user.company_id.ldaps
|
||||
if user.active and any(ldaps.mapped("only_ldap_groups")):
|
||||
for conf in ldaps._get_ldap_dicts():
|
||||
entry = ldaps._authenticate(conf, login, password)
|
||||
if entry:
|
||||
ldaps._get_or_create_user(conf, login, entry)
|
||||
break
|
||||
return user_id
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
* Holger Brunn <hbrunn@therp.nl>
|
||||
* Giacomo Spettoli <giacomo.spettoli@gmail.com>
|
||||
* `CorporateHub <https://corporatehub.eu/>`__
|
||||
|
||||
* Alexey Pelykh <alexey.pelykh@corphub.eu>
|
||||
* Tecnativa <https://www.tecnativa.com>
|
||||
|
||||
* João Marques
|
||||
* Carolina Fernandez
|
||||
* Dhara Solanki <dhara.solanki@initos.com>
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
.. image:: https://img.shields.io/badge/license-AGPL--3-blue.png
|
||||
:target: https://www.gnu.org/licenses/agpl
|
||||
:alt: License: AGPL-3
|
||||
|
||||
Adds user accounts to groups based on rules defined by the administrator.
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
Define mappings in Settings / General Settings / Integrations / LDAP Authentication / LDAP Server
|
||||
|
||||
Decide whether you want only groups mapped from LDAP (`Only LDAP groups` checked) or a mix of manually set groups and LDAP groups (`Only LDAP groups` unchecked).
|
||||
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.
|
||||
If set to "Yes", you need to make sure each user has at least on of the "User types" groups
|
||||
|
||||
For active directory, use LDAP attribute 'memberOf' and operator 'contains'. Fill in the DN of the windows group as value and choose an Odoo 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`.
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
||||
access_res_company_ldap_groups,res_company_ldap_groups,model_res_company_ldap_group_mapping,base.group_system,1,1,1,1
|
||||
|
Binary file not shown.
|
After Width: | Height: | Size: 9.2 KiB |
|
|
@ -0,0 +1,454 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="generator" content="Docutils: https://docutils.sourceforge.io/" />
|
||||
<title>LDAP groups assignment</title>
|
||||
<style type="text/css">
|
||||
|
||||
/*
|
||||
:Author: David Goodger (goodger@python.org)
|
||||
:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $
|
||||
:Copyright: This stylesheet has been placed in the public domain.
|
||||
|
||||
Default cascading style sheet for the HTML output of Docutils.
|
||||
Despite the name, some widely supported CSS2 features are used.
|
||||
|
||||
See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to
|
||||
customize this style sheet.
|
||||
*/
|
||||
|
||||
/* used to remove borders from tables and images */
|
||||
.borderless, table.borderless td, table.borderless th {
|
||||
border: 0 }
|
||||
|
||||
table.borderless td, table.borderless th {
|
||||
/* Override padding for "table.docutils td" with "! important".
|
||||
The right padding separates the table cells. */
|
||||
padding: 0 0.5em 0 0 ! important }
|
||||
|
||||
.first {
|
||||
/* Override more specific margin styles with "! important". */
|
||||
margin-top: 0 ! important }
|
||||
|
||||
.last, .with-subtitle {
|
||||
margin-bottom: 0 ! important }
|
||||
|
||||
.hidden {
|
||||
display: none }
|
||||
|
||||
.subscript {
|
||||
vertical-align: sub;
|
||||
font-size: smaller }
|
||||
|
||||
.superscript {
|
||||
vertical-align: super;
|
||||
font-size: smaller }
|
||||
|
||||
a.toc-backref {
|
||||
text-decoration: none ;
|
||||
color: black }
|
||||
|
||||
blockquote.epigraph {
|
||||
margin: 2em 5em ; }
|
||||
|
||||
dl.docutils dd {
|
||||
margin-bottom: 0.5em }
|
||||
|
||||
object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
/* Uncomment (and remove this text!) to get bold-faced definition list terms
|
||||
dl.docutils dt {
|
||||
font-weight: bold }
|
||||
*/
|
||||
|
||||
div.abstract {
|
||||
margin: 2em 5em }
|
||||
|
||||
div.abstract p.topic-title {
|
||||
font-weight: bold ;
|
||||
text-align: center }
|
||||
|
||||
div.admonition, div.attention, div.caution, div.danger, div.error,
|
||||
div.hint, div.important, div.note, div.tip, div.warning {
|
||||
margin: 2em ;
|
||||
border: medium outset ;
|
||||
padding: 1em }
|
||||
|
||||
div.admonition p.admonition-title, div.hint p.admonition-title,
|
||||
div.important p.admonition-title, div.note p.admonition-title,
|
||||
div.tip p.admonition-title {
|
||||
font-weight: bold ;
|
||||
font-family: sans-serif }
|
||||
|
||||
div.attention p.admonition-title, div.caution p.admonition-title,
|
||||
div.danger p.admonition-title, div.error p.admonition-title,
|
||||
div.warning p.admonition-title, .code .error {
|
||||
color: red ;
|
||||
font-weight: bold ;
|
||||
font-family: sans-serif }
|
||||
|
||||
/* Uncomment (and remove this text!) to get reduced vertical space in
|
||||
compound paragraphs.
|
||||
div.compound .compound-first, div.compound .compound-middle {
|
||||
margin-bottom: 0.5em }
|
||||
|
||||
div.compound .compound-last, div.compound .compound-middle {
|
||||
margin-top: 0.5em }
|
||||
*/
|
||||
|
||||
div.dedication {
|
||||
margin: 2em 5em ;
|
||||
text-align: center ;
|
||||
font-style: italic }
|
||||
|
||||
div.dedication p.topic-title {
|
||||
font-weight: bold ;
|
||||
font-style: normal }
|
||||
|
||||
div.figure {
|
||||
margin-left: 2em ;
|
||||
margin-right: 2em }
|
||||
|
||||
div.footer, div.header {
|
||||
clear: both;
|
||||
font-size: smaller }
|
||||
|
||||
div.line-block {
|
||||
display: block ;
|
||||
margin-top: 1em ;
|
||||
margin-bottom: 1em }
|
||||
|
||||
div.line-block div.line-block {
|
||||
margin-top: 0 ;
|
||||
margin-bottom: 0 ;
|
||||
margin-left: 1.5em }
|
||||
|
||||
div.sidebar {
|
||||
margin: 0 0 0.5em 1em ;
|
||||
border: medium outset ;
|
||||
padding: 1em ;
|
||||
background-color: #ffffee ;
|
||||
width: 40% ;
|
||||
float: right ;
|
||||
clear: right }
|
||||
|
||||
div.sidebar p.rubric {
|
||||
font-family: sans-serif ;
|
||||
font-size: medium }
|
||||
|
||||
div.system-messages {
|
||||
margin: 5em }
|
||||
|
||||
div.system-messages h1 {
|
||||
color: red }
|
||||
|
||||
div.system-message {
|
||||
border: medium outset ;
|
||||
padding: 1em }
|
||||
|
||||
div.system-message p.system-message-title {
|
||||
color: red ;
|
||||
font-weight: bold }
|
||||
|
||||
div.topic {
|
||||
margin: 2em }
|
||||
|
||||
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
|
||||
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
|
||||
margin-top: 0.4em }
|
||||
|
||||
h1.title {
|
||||
text-align: center }
|
||||
|
||||
h2.subtitle {
|
||||
text-align: center }
|
||||
|
||||
hr.docutils {
|
||||
width: 75% }
|
||||
|
||||
img.align-left, .figure.align-left, object.align-left, table.align-left {
|
||||
clear: left ;
|
||||
float: left ;
|
||||
margin-right: 1em }
|
||||
|
||||
img.align-right, .figure.align-right, object.align-right, table.align-right {
|
||||
clear: right ;
|
||||
float: right ;
|
||||
margin-left: 1em }
|
||||
|
||||
img.align-center, .figure.align-center, object.align-center {
|
||||
display: block;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
table.align-center {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
.align-left {
|
||||
text-align: left }
|
||||
|
||||
.align-center {
|
||||
clear: both ;
|
||||
text-align: center }
|
||||
|
||||
.align-right {
|
||||
text-align: right }
|
||||
|
||||
/* reset inner alignment in figures */
|
||||
div.align-right {
|
||||
text-align: inherit }
|
||||
|
||||
/* div.align-center * { */
|
||||
/* text-align: left } */
|
||||
|
||||
.align-top {
|
||||
vertical-align: top }
|
||||
|
||||
.align-middle {
|
||||
vertical-align: middle }
|
||||
|
||||
.align-bottom {
|
||||
vertical-align: bottom }
|
||||
|
||||
ol.simple, ul.simple {
|
||||
margin-bottom: 1em }
|
||||
|
||||
ol.arabic {
|
||||
list-style: decimal }
|
||||
|
||||
ol.loweralpha {
|
||||
list-style: lower-alpha }
|
||||
|
||||
ol.upperalpha {
|
||||
list-style: upper-alpha }
|
||||
|
||||
ol.lowerroman {
|
||||
list-style: lower-roman }
|
||||
|
||||
ol.upperroman {
|
||||
list-style: upper-roman }
|
||||
|
||||
p.attribution {
|
||||
text-align: right ;
|
||||
margin-left: 50% }
|
||||
|
||||
p.caption {
|
||||
font-style: italic }
|
||||
|
||||
p.credits {
|
||||
font-style: italic ;
|
||||
font-size: smaller }
|
||||
|
||||
p.label {
|
||||
white-space: nowrap }
|
||||
|
||||
p.rubric {
|
||||
font-weight: bold ;
|
||||
font-size: larger ;
|
||||
color: maroon ;
|
||||
text-align: center }
|
||||
|
||||
p.sidebar-title {
|
||||
font-family: sans-serif ;
|
||||
font-weight: bold ;
|
||||
font-size: larger }
|
||||
|
||||
p.sidebar-subtitle {
|
||||
font-family: sans-serif ;
|
||||
font-weight: bold }
|
||||
|
||||
p.topic-title {
|
||||
font-weight: bold }
|
||||
|
||||
pre.address {
|
||||
margin-bottom: 0 ;
|
||||
margin-top: 0 ;
|
||||
font: inherit }
|
||||
|
||||
pre.literal-block, pre.doctest-block, pre.math, pre.code {
|
||||
margin-left: 2em ;
|
||||
margin-right: 2em }
|
||||
|
||||
pre.code .ln { color: gray; } /* line numbers */
|
||||
pre.code, code { background-color: #eeeeee }
|
||||
pre.code .comment, code .comment { color: #5C6576 }
|
||||
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
|
||||
pre.code .literal.string, code .literal.string { color: #0C5404 }
|
||||
pre.code .name.builtin, code .name.builtin { color: #352B84 }
|
||||
pre.code .deleted, code .deleted { background-color: #DEB0A1}
|
||||
pre.code .inserted, code .inserted { background-color: #A3D289}
|
||||
|
||||
span.classifier {
|
||||
font-family: sans-serif ;
|
||||
font-style: oblique }
|
||||
|
||||
span.classifier-delimiter {
|
||||
font-family: sans-serif ;
|
||||
font-weight: bold }
|
||||
|
||||
span.interpreted {
|
||||
font-family: sans-serif }
|
||||
|
||||
span.option {
|
||||
white-space: nowrap }
|
||||
|
||||
span.pre {
|
||||
white-space: pre }
|
||||
|
||||
span.problematic, pre.problematic {
|
||||
color: red }
|
||||
|
||||
span.section-subtitle {
|
||||
/* font-size relative to parent (h1..h6 element) */
|
||||
font-size: 80% }
|
||||
|
||||
table.citation {
|
||||
border-left: solid 1px gray;
|
||||
margin-left: 1px }
|
||||
|
||||
table.docinfo {
|
||||
margin: 2em 4em }
|
||||
|
||||
table.docutils {
|
||||
margin-top: 0.5em ;
|
||||
margin-bottom: 0.5em }
|
||||
|
||||
table.footnote {
|
||||
border-left: solid 1px black;
|
||||
margin-left: 1px }
|
||||
|
||||
table.docutils td, table.docutils th,
|
||||
table.docinfo td, table.docinfo th {
|
||||
padding-left: 0.5em ;
|
||||
padding-right: 0.5em ;
|
||||
vertical-align: top }
|
||||
|
||||
table.docutils th.field-name, table.docinfo th.docinfo-name {
|
||||
font-weight: bold ;
|
||||
text-align: left ;
|
||||
white-space: nowrap ;
|
||||
padding-left: 0 }
|
||||
|
||||
/* "booktabs" style (no vertical lines) */
|
||||
table.docutils.booktabs {
|
||||
border: 0px;
|
||||
border-top: 2px solid;
|
||||
border-bottom: 2px solid;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
table.docutils.booktabs * {
|
||||
border: 0px;
|
||||
}
|
||||
table.docutils.booktabs th {
|
||||
border-bottom: thin solid;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
|
||||
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
|
||||
font-size: 100% }
|
||||
|
||||
ul.auto-toc {
|
||||
list-style-type: none }
|
||||
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="document" id="ldap-groups-assignment">
|
||||
<h1 class="title">LDAP groups assignment</h1>
|
||||
|
||||
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
!! This file is generated by oca-gen-addon-readme !!
|
||||
!! changes will be overwritten. !!
|
||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
!! source digest: sha256:e9016a5e491a0652aa384dd8c4e7ecf8d1091a4d7895f1b720d9a7b84814ab10
|
||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
||||
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/server-auth/tree/16.0/users_ldap_groups"><img alt="OCA/server-auth" src="https://img.shields.io/badge/github-OCA%2Fserver--auth-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/server-auth-16-0/server-auth-16-0-users_ldap_groups"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/server-auth&target_branch=16.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
|
||||
<a class="reference external image-reference" href="https://www.gnu.org/licenses/agpl">
|
||||
<img alt="License: AGPL-3" src="https://img.shields.io/badge/license-AGPL--3-blue.png" />
|
||||
</a>
|
||||
<p>Adds user accounts to groups based on rules defined by the administrator.</p>
|
||||
<p><strong>Table of contents</strong></p>
|
||||
<div class="contents local topic" id="contents">
|
||||
<ul class="simple">
|
||||
<li><a class="reference internal" href="#usage" id="toc-entry-1">Usage</a></li>
|
||||
<li><a class="reference internal" href="#bug-tracker" id="toc-entry-2">Bug Tracker</a></li>
|
||||
<li><a class="reference internal" href="#credits" id="toc-entry-3">Credits</a><ul>
|
||||
<li><a class="reference internal" href="#authors" id="toc-entry-4">Authors</a></li>
|
||||
<li><a class="reference internal" href="#contributors" id="toc-entry-5">Contributors</a></li>
|
||||
<li><a class="reference internal" href="#maintainers" id="toc-entry-6">Maintainers</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="usage">
|
||||
<h1><a class="toc-backref" href="#toc-entry-1">Usage</a></h1>
|
||||
<p>Define mappings in Settings / General Settings / Integrations / LDAP Authentication / LDAP Server</p>
|
||||
<p>Decide whether you want only groups mapped from LDAP (<cite>Only LDAP groups</cite> checked) or a mix of manually set groups and LDAP groups (<cite>Only LDAP groups</cite> unchecked).
|
||||
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.
|
||||
If set to “Yes”, you need to make sure each user has at least on of the “User types” groups</p>
|
||||
<p>For active directory, use LDAP attribute ‘memberOf’ and operator ‘contains’. Fill in the DN of the windows group as value and choose an Odoo group users with this windows group are to be assigned to.</p>
|
||||
<p>For posix accounts, use operator ‘query’ and a value like:</p>
|
||||
<pre class="literal-block">
|
||||
(&(cn=bzr)(objectClass=posixGroup)(memberUid=$uid))
|
||||
</pre>
|
||||
<p>The operator query matches if the filter in value returns something, and value
|
||||
can contain <tt class="docutils literal">$attribute</tt> which will be replaced by the first value of the
|
||||
user’s LDAP record’s attribute named <cite>attribute</cite>.</p>
|
||||
</div>
|
||||
<div class="section" id="bug-tracker">
|
||||
<h1><a class="toc-backref" href="#toc-entry-2">Bug Tracker</a></h1>
|
||||
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/server-auth/issues">GitHub Issues</a>.
|
||||
In case of trouble, please check there if your issue has already been reported.
|
||||
If you spotted it first, help us to smash it by providing a detailed and welcomed
|
||||
<a class="reference external" href="https://github.com/OCA/server-auth/issues/new?body=module:%20users_ldap_groups%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
|
||||
<p>Do not contact contributors directly about support or help with technical issues.</p>
|
||||
</div>
|
||||
<div class="section" id="credits">
|
||||
<h1><a class="toc-backref" href="#toc-entry-3">Credits</a></h1>
|
||||
<div class="section" id="authors">
|
||||
<h2><a class="toc-backref" href="#toc-entry-4">Authors</a></h2>
|
||||
<ul class="simple">
|
||||
<li>Therp BV</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="contributors">
|
||||
<h2><a class="toc-backref" href="#toc-entry-5">Contributors</a></h2>
|
||||
<ul class="simple">
|
||||
<li>Holger Brunn <<a class="reference external" href="mailto:hbrunn@therp.nl">hbrunn@therp.nl</a>></li>
|
||||
<li>Giacomo Spettoli <<a class="reference external" href="mailto:giacomo.spettoli@gmail.com">giacomo.spettoli@gmail.com</a>></li>
|
||||
<li><a class="reference external" href="https://corporatehub.eu/">CorporateHub</a><ul>
|
||||
<li>Alexey Pelykh <<a class="reference external" href="mailto:alexey.pelykh@corphub.eu">alexey.pelykh@corphub.eu</a>></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>Tecnativa <<a class="reference external" href="https://www.tecnativa.com">https://www.tecnativa.com</a>><ul>
|
||||
<li>João Marques</li>
|
||||
<li>Carolina Fernandez</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>Dhara Solanki <<a class="reference external" href="mailto:dhara.solanki@initos.com">dhara.solanki@initos.com</a>></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="maintainers">
|
||||
<h2><a class="toc-backref" href="#toc-entry-6">Maintainers</a></h2>
|
||||
<p>This module is maintained by the OCA.</p>
|
||||
<a class="reference external image-reference" href="https://odoo-community.org">
|
||||
<img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" />
|
||||
</a>
|
||||
<p>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.</p>
|
||||
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/server-auth/tree/16.0/users_ldap_groups">OCA/server-auth</a> project on GitHub.</p>
|
||||
<p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
|
||||
from . import test_users_ldap_groups
|
||||
|
|
@ -0,0 +1,294 @@
|
|||
# Copyright 2018 Therp BV <https://therp.nl>
|
||||
# Copyright 2018 Brainbean Apps <https://brainbeanapps.com>
|
||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
|
||||
from contextlib import contextmanager
|
||||
from unittest import mock
|
||||
|
||||
from odoo.exceptions import UserError
|
||||
from odoo.tests.common import TransactionCase
|
||||
|
||||
_auth_ldap_ns = "odoo.addons.auth_ldap"
|
||||
_company_ldap_class = _auth_ldap_ns + ".models.res_company_ldap.CompanyLDAP"
|
||||
|
||||
|
||||
@contextmanager
|
||||
def mock_cursor(cr):
|
||||
with mock.patch("odoo.sql_db.Connection.cursor") as mocked_cursor_call:
|
||||
org_close = cr.close
|
||||
org_autocommit = cr.autocommit
|
||||
try:
|
||||
cr.close = mock.Mock()
|
||||
cr.autocommit = mock.Mock()
|
||||
cr.commit = mock.Mock()
|
||||
mocked_cursor_call.return_value = cr
|
||||
yield
|
||||
finally:
|
||||
cr.close = org_close
|
||||
cr.autocommit = org_autocommit
|
||||
|
||||
|
||||
class FakeLdapConnection(object):
|
||||
def __init__(self, entries):
|
||||
self.entries = entries
|
||||
|
||||
def simple_bind_s(self, dn, passwd):
|
||||
pass
|
||||
|
||||
def search_st(self, dn, scope, ldap_filter, attributes, timeout):
|
||||
if dn in self.entries:
|
||||
return [(dn, dict(self.entries[dn]))]
|
||||
return []
|
||||
|
||||
def unbind(self):
|
||||
pass
|
||||
|
||||
def unbind_s(self):
|
||||
pass
|
||||
|
||||
def __getattr__(self, name):
|
||||
def wrapper():
|
||||
raise Exception("'%s' is not mocked" % name)
|
||||
|
||||
return wrapper
|
||||
|
||||
|
||||
class TestUsersLdapGroups(TransactionCase):
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
self.group_system = self.env.ref("base.group_system")
|
||||
self.group_user = self.env.ref("base.group_user")
|
||||
self.group_contains = self.env["res.groups"].create({"name": "contains"})
|
||||
self.group_equals = self.env["res.groups"].create({"name": "equals"})
|
||||
self.group_query = self.env["res.groups"].create({"name": "query"})
|
||||
|
||||
def _create_ldap_config(self, groups, only_ldap_groups=False, cr=None):
|
||||
vals = {
|
||||
"company": self.env.ref("base.main_company").id,
|
||||
"ldap_base": "dc=users_ldap_groups,dc=example,dc=com",
|
||||
"ldap_filter": "(uid=%s)",
|
||||
"ldap_binddn": "cn=bind,dc=example,dc=com",
|
||||
"create_user": True,
|
||||
"only_ldap_groups": only_ldap_groups,
|
||||
"group_mapping_ids": [(0, 0, group) for group in groups],
|
||||
}
|
||||
return self.env["res.company.ldap"].create(vals)
|
||||
|
||||
def test_users_ldap_groups_only_true(self):
|
||||
self._create_ldap_config(
|
||||
groups=[
|
||||
{
|
||||
"ldap_attribute": "name",
|
||||
"operator": "contains",
|
||||
"value": "hello3",
|
||||
"group_id": self.group_system.id,
|
||||
},
|
||||
{
|
||||
"ldap_attribute": "name",
|
||||
"operator": "contains",
|
||||
"value": "hello",
|
||||
"group_id": self.group_user.id,
|
||||
},
|
||||
{
|
||||
"ldap_attribute": "name",
|
||||
"operator": "contains",
|
||||
"value": "hello2",
|
||||
"group_id": self.group_contains.id,
|
||||
},
|
||||
{
|
||||
"ldap_attribute": "name",
|
||||
"operator": "equals",
|
||||
"value": "hello",
|
||||
"group_id": self.group_equals.id,
|
||||
},
|
||||
{
|
||||
"ldap_attribute": "",
|
||||
"operator": "query",
|
||||
"value": "is not run because of patching",
|
||||
"group_id": self.group_query.id,
|
||||
},
|
||||
],
|
||||
only_ldap_groups=True,
|
||||
)
|
||||
# _login does its work in a new cursor, so we need to mock it
|
||||
with mock.patch(
|
||||
_company_ldap_class + "._connect",
|
||||
return_value=FakeLdapConnection(
|
||||
{
|
||||
"dc=users_ldap_groups,dc=example,dc=com": {
|
||||
"cn": [b"User Name"],
|
||||
"name": [b"hello", b"hello2"],
|
||||
}
|
||||
}
|
||||
),
|
||||
), mock_cursor(self.cr):
|
||||
user_id = (
|
||||
self.env["res.users"]
|
||||
.sudo()
|
||||
.authenticate(
|
||||
self.env.cr.dbname, "users_ldap_groups-username", "password", {}
|
||||
)
|
||||
)
|
||||
# this asserts group mappings from demo data
|
||||
user = self.env["res.users"].sudo().browse(user_id)
|
||||
groups = user.groups_id
|
||||
self.assertIn(self.group_contains, groups)
|
||||
self.assertIn(self.group_user, groups)
|
||||
self.assertNotIn(self.group_equals, groups)
|
||||
self.assertIn(self.group_query, groups)
|
||||
self.assertNotIn(self.group_system, groups)
|
||||
|
||||
def test_users_ldap_groups_only_false(self):
|
||||
self._create_ldap_config(
|
||||
groups=[
|
||||
{
|
||||
"ldap_attribute": "name",
|
||||
"operator": "contains",
|
||||
"value": "hello2",
|
||||
"group_id": self.group_contains.id,
|
||||
},
|
||||
{
|
||||
"ldap_attribute": "name",
|
||||
"operator": "contains",
|
||||
"value": "hello",
|
||||
"group_id": self.group_equals.id,
|
||||
},
|
||||
],
|
||||
only_ldap_groups=False,
|
||||
)
|
||||
with mock.patch(
|
||||
_company_ldap_class + "._connect",
|
||||
return_value=FakeLdapConnection(
|
||||
{
|
||||
"dc=users_ldap_groups,dc=example,dc=com": {
|
||||
"cn": [b"User Name"],
|
||||
"name": [b"hello", b"hello2"],
|
||||
}
|
||||
}
|
||||
),
|
||||
), mock_cursor(self.cr):
|
||||
user_id = (
|
||||
self.env["res.users"]
|
||||
.sudo()
|
||||
.authenticate(
|
||||
self.env.cr.dbname, "users_ldap_groups-username", "password", {}
|
||||
)
|
||||
)
|
||||
# this asserts group mappings from demo data
|
||||
user = self.env["res.users"].sudo().browse(user_id)
|
||||
groups = user.groups_id
|
||||
self.assertIn(self.group_contains, groups)
|
||||
self.assertIn(self.group_equals, groups)
|
||||
self.assertGreater(len(groups), 2) # user should keep default groups
|
||||
|
||||
def _test_users_ldap_groups_not_user_type(self):
|
||||
self._create_ldap_config(
|
||||
groups=[
|
||||
{
|
||||
"ldap_attribute": "name",
|
||||
"operator": "contains",
|
||||
"value": "hello3",
|
||||
"group_id": self.group_system.id,
|
||||
},
|
||||
{
|
||||
"ldap_attribute": "name",
|
||||
"operator": "contains",
|
||||
"value": "hello2",
|
||||
"group_id": self.group_contains.id,
|
||||
},
|
||||
{
|
||||
"ldap_attribute": "name",
|
||||
"operator": "equals",
|
||||
"value": "hello",
|
||||
"group_id": self.group_equals.id,
|
||||
},
|
||||
{
|
||||
"ldap_attribute": "",
|
||||
"operator": "query",
|
||||
"value": "is not run because of patching",
|
||||
"group_id": self.group_query.id,
|
||||
},
|
||||
],
|
||||
only_ldap_groups=True,
|
||||
)
|
||||
with mock.patch(
|
||||
_company_ldap_class + "._connect",
|
||||
return_value=FakeLdapConnection(
|
||||
{
|
||||
"dc=users_ldap_groups,dc=example,dc=com": {
|
||||
"cn": [b"User Name"],
|
||||
"name": [b"hello", b"hello2"],
|
||||
}
|
||||
}
|
||||
),
|
||||
), mock_cursor(self.cr):
|
||||
with self.assertRaises(UserError):
|
||||
self.env["res.users"].sudo().authenticate(
|
||||
self.env.cr.dbname, "users_ldap_groups-username", "password", {}
|
||||
)
|
||||
|
||||
def test_users_ldap_groups_ldap_returns_binary_data(self):
|
||||
self._create_ldap_config(
|
||||
groups=[
|
||||
{
|
||||
"ldap_attribute": "name",
|
||||
"operator": "contains",
|
||||
"value": "hello3",
|
||||
"group_id": self.group_system.id,
|
||||
},
|
||||
{
|
||||
"ldap_attribute": "name",
|
||||
"operator": "contains",
|
||||
"value": "hello",
|
||||
"group_id": self.group_user.id,
|
||||
},
|
||||
{
|
||||
"ldap_attribute": "name",
|
||||
"operator": "contains",
|
||||
"value": "hello2",
|
||||
"group_id": self.group_contains.id,
|
||||
},
|
||||
{
|
||||
"ldap_attribute": "name",
|
||||
"operator": "equals",
|
||||
"value": "hello",
|
||||
"group_id": self.group_equals.id,
|
||||
},
|
||||
{
|
||||
"ldap_attribute": "",
|
||||
"operator": "query",
|
||||
"value": "is not run because of patching",
|
||||
"group_id": self.group_query.id,
|
||||
},
|
||||
],
|
||||
only_ldap_groups=True,
|
||||
)
|
||||
with mock.patch(
|
||||
_company_ldap_class + "._connect",
|
||||
return_value=FakeLdapConnection(
|
||||
{
|
||||
"dc=users_ldap_groups,dc=example,dc=com": {
|
||||
"cn": [b"User Name"],
|
||||
"name": [b"hello", b"hello2"],
|
||||
"thumbnailPhoto": [
|
||||
b"GIF89a\x01\x00\x01\x00\x00\xff\x00,"
|
||||
b"\x00\x00\x00\x00\x01\x00\x01\x00\x00\x02\x00;"
|
||||
],
|
||||
}
|
||||
}
|
||||
),
|
||||
), mock_cursor(self.cr):
|
||||
user_id = (
|
||||
self.env["res.users"]
|
||||
.sudo()
|
||||
.authenticate(
|
||||
self.env.cr.dbname, "users_ldap_groups-username", "password", {}
|
||||
)
|
||||
)
|
||||
# this asserts group mappings from demo data
|
||||
user = self.env["res.users"].sudo().browse(user_id)
|
||||
groups = user.groups_id
|
||||
self.assertIn(self.group_contains, groups)
|
||||
self.assertIn(self.group_user, groups)
|
||||
self.assertNotIn(self.group_equals, groups)
|
||||
self.assertIn(self.group_query, groups)
|
||||
self.assertNotIn(self.group_system, groups)
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
<?xml version="1.0" ?>
|
||||
<odoo>
|
||||
<!--
|
||||
Copyright 2018 Therp BV <https://therp.nl>
|
||||
Copyright 2018 Brainbean Apps <https://brainbeanapps.com>
|
||||
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
|
||||
-->
|
||||
<record id="view_ldap_installer_form" model="ir.ui.view">
|
||||
<field name="name">res.company.ldap.form</field>
|
||||
<field name="model">res.company.ldap</field>
|
||||
<field name="inherit_id" ref="auth_ldap.view_ldap_installer_form" />
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//group/field[@name='ldap_server']/../..">
|
||||
<group string="Map User Groups">
|
||||
<field name="only_ldap_groups" />
|
||||
<label for="group_mapping_ids" />
|
||||
<field name="group_mapping_ids" nolabel="1">
|
||||
<tree editable="bottom">
|
||||
<field
|
||||
name="ldap_attribute"
|
||||
attrs="{'required': [('operator','not in',['query'])], 'readonly': [('operator','in',['query'])]}"
|
||||
/>
|
||||
<field name="operator" />
|
||||
<field name="value" />
|
||||
<field name="group_id" />
|
||||
</tree>
|
||||
</field>
|
||||
</group>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
||||
Loading…
Add table
Add a link
Reference in a new issue