diff --git a/auth_admin_passkey/README.rst b/auth_admin_passkey/README.rst new file mode 100644 index 000000000..ccaf6c0c4 --- /dev/null +++ b/auth_admin_passkey/README.rst @@ -0,0 +1,123 @@ +=============================================== +Authentification - System Administrator Passkey +=============================================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:5747081959f948bc3969ac96543ca8e56a01418bff23687907352ae112298d85 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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/17.0/auth_admin_passkey + :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-17-0/server-auth-17-0-auth_admin_passkey + :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=17.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module extends the functionality of users module to support loging +in with an extra system administrator password in other user accounts. + +- System Administrator has now the possibility to login in with any + login +- According to the configuration, Odoo will send a mail to user and + admin to indicate them +- According to the configuration, password can be stored encrypted in + configuration file + +**Table of contents** + +.. contents:: + :local: + +Configuration +============= + +To enable this feature, once the module installed, you have to add the +following keys in your ``odoo.cfg`` configuration file. + +- ``auth_admin_passkey_password``. The password that allows user to + logging in with any login. If not set, the feature is disabled. +- ``auth_admin_passkey_password_sha512_encrypted`` (default False), if + enabled, auth_admin_passkey_password should be the password encrypted + with sha512. On linux, this can be done using this command: + ``echo -n YOUR_PASSWORD_AUTH_ADMIN_PASSKEY | sha512sum`` +- ``auth_admin_passkey_send_to_user`` (default True), if enabled, an + email will be send to the user, if his account has been used by the + System Administrator. +- ``auth_admin_passkey_sysadmin_email``. If set, an email will be sent + to this mail. +- ``auth_admin_passkey_sysadmin_lang``. the language (exemple en_US), + used for the mail sent to the System Administrator. If not set, the + language of the SUPERUSER_ID user will be used. + +**typical Dev / Test configuration section** + +No keys to add. + +**typical Production configuration section** + +.. code:: ini + + auth_admin_passkey_password = PASSKEY_PASSWORD + auth_admin_passkey_password_sha512_encrypted = True + auth_admin_passkey_send_to_user = True + auth_admin_passkey_sysadmin_email = SYSADMIN_EMAIL + auth_admin_passkey_sysadmin_lang = SYSADMIN_LANG + +Bug Tracker +=========== + +Bugs are tracked on `GitHub 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 `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +------- + +* GRAP + +Contributors +------------ + +- Eugen Don +- Alexandre Papin (https://twitter.com/Fenkiou) +- Sylvain LE GAL (https://twitter.com/legalsylvain) +- Dhara Solanki (http://www.initos.com) +- Zina Rasoamanana + +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 `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/auth_admin_passkey/__init__.py b/auth_admin_passkey/__init__.py new file mode 100644 index 000000000..0650744f6 --- /dev/null +++ b/auth_admin_passkey/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/auth_admin_passkey/__manifest__.py b/auth_admin_passkey/__manifest__.py new file mode 100644 index 000000000..668acd44e --- /dev/null +++ b/auth_admin_passkey/__manifest__.py @@ -0,0 +1,15 @@ +# Copyright (C) 2013-Today GRAP (http://www.grap.coop) +# @author Sylvain LE GAL (https://twitter.com/legalsylvain) +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + +{ + "name": "Authentification - System Administrator Passkey", + "summary": "Allows system administrator to authenticate with any account", + "version": "17.0.1.0.0", + "category": "base", + "author": "GRAP,Odoo Community Association (OCA)", + "website": "https://github.com/OCA/server-auth", + "license": "AGPL-3", + "depends": ["mail"], + "installable": True, +} diff --git a/auth_admin_passkey/i18n/ar.po b/auth_admin_passkey/i18n/ar.po new file mode 100644 index 000000000..49e8883e2 --- /dev/null +++ b/auth_admin_passkey/i18n/ar.po @@ -0,0 +1,50 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * auth_admin_passkey +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: server-tools (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-01-12 03:50+0000\n" +"PO-Revision-Date: 2017-01-11 15:36+0000\n" +"Last-Translator: OCA Transbot \n" +"Language-Team: Arabic (http://www.transifex.com/oca/OCA-server-tools-8-0/" +"language/ar/)\n" +"Language: ar\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " +"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" + +#. module: auth_admin_passkey +#. odoo-python +#: code:addons/auth_admin_passkey/models/res_users.py:0 +#, python-format +msgid "Passkey used" +msgstr "" + +#. module: auth_admin_passkey +#. odoo-python +#: code:addons/auth_admin_passkey/models/res_users.py:0 +#, python-format +msgid "" +"System Administrator user used his passkey to login with %(login)s.\n" +"\n" +"\n" +"\n" +"Technicals informations belows : \n" +"\n" +"- Login date : %(login_date)s\n" +"\n" +msgstr "" + +#. module: auth_admin_passkey +#: model:ir.model,name:auth_admin_passkey.model_res_users +msgid "User" +msgstr "" + +#~ msgid "Users" +#~ msgstr "المستخدمون" diff --git a/auth_admin_passkey/i18n/auth_admin_passkey.pot b/auth_admin_passkey/i18n/auth_admin_passkey.pot new file mode 100644 index 000000000..bc777de32 --- /dev/null +++ b/auth_admin_passkey/i18n/auth_admin_passkey.pot @@ -0,0 +1,41 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * auth_admin_passkey +# +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: auth_admin_passkey +#. odoo-python +#: code:addons/auth_admin_passkey/models/res_users.py:0 +#, python-format +msgid "Passkey used" +msgstr "" + +#. module: auth_admin_passkey +#. odoo-python +#: code:addons/auth_admin_passkey/models/res_users.py:0 +#, python-format +msgid "" +"System Administrator user used his passkey to login with %(login)s.\n" +"\n" +"\n" +"\n" +"Technicals informations belows : \n" +"\n" +"- Login date : %(login_date)s\n" +"\n" +msgstr "" + +#. module: auth_admin_passkey +#: model:ir.model,name:auth_admin_passkey.model_res_users +msgid "User" +msgstr "" diff --git a/auth_admin_passkey/i18n/ca.po b/auth_admin_passkey/i18n/ca.po new file mode 100644 index 000000000..87aa3ce25 --- /dev/null +++ b/auth_admin_passkey/i18n/ca.po @@ -0,0 +1,49 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * auth_admin_passkey +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: server-tools (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-01-17 07:51+0000\n" +"PO-Revision-Date: 2015-09-18 13:53+0000\n" +"Last-Translator: <>\n" +"Language-Team: Catalan (http://www.transifex.com/oca/OCA-server-tools-8-0/" +"language/ca/)\n" +"Language: ca\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: auth_admin_passkey +#. odoo-python +#: code:addons/auth_admin_passkey/models/res_users.py:0 +#, python-format +msgid "Passkey used" +msgstr "" + +#. module: auth_admin_passkey +#. odoo-python +#: code:addons/auth_admin_passkey/models/res_users.py:0 +#, python-format +msgid "" +"System Administrator user used his passkey to login with %(login)s.\n" +"\n" +"\n" +"\n" +"Technicals informations belows : \n" +"\n" +"- Login date : %(login_date)s\n" +"\n" +msgstr "" + +#. module: auth_admin_passkey +#: model:ir.model,name:auth_admin_passkey.model_res_users +msgid "User" +msgstr "" + +#~ msgid "Users" +#~ msgstr "Usuaris" diff --git a/auth_admin_passkey/i18n/da.po b/auth_admin_passkey/i18n/da.po new file mode 100644 index 000000000..907c34f51 --- /dev/null +++ b/auth_admin_passkey/i18n/da.po @@ -0,0 +1,49 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * auth_admin_passkey +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: server-tools (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-03-18 02:08+0000\n" +"PO-Revision-Date: 2015-09-18 13:53+0000\n" +"Last-Translator: <>\n" +"Language-Team: Danish (http://www.transifex.com/oca/OCA-server-tools-8-0/" +"language/da/)\n" +"Language: da\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: auth_admin_passkey +#. odoo-python +#: code:addons/auth_admin_passkey/models/res_users.py:0 +#, python-format +msgid "Passkey used" +msgstr "" + +#. module: auth_admin_passkey +#. odoo-python +#: code:addons/auth_admin_passkey/models/res_users.py:0 +#, python-format +msgid "" +"System Administrator user used his passkey to login with %(login)s.\n" +"\n" +"\n" +"\n" +"Technicals informations belows : \n" +"\n" +"- Login date : %(login_date)s\n" +"\n" +msgstr "" + +#. module: auth_admin_passkey +#: model:ir.model,name:auth_admin_passkey.model_res_users +msgid "User" +msgstr "" + +#~ msgid "Users" +#~ msgstr "Brugere" diff --git a/auth_admin_passkey/i18n/de.po b/auth_admin_passkey/i18n/de.po new file mode 100644 index 000000000..d40f5d149 --- /dev/null +++ b/auth_admin_passkey/i18n/de.po @@ -0,0 +1,103 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * auth_admin_passkey +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-08-01 02:43+0000\n" +"PO-Revision-Date: 2017-08-01 02:43+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: German (https://www.transifex.com/oca/teams/23907/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: auth_admin_passkey +#. odoo-python +#: code:addons/auth_admin_passkey/models/res_users.py:0 +#, python-format +msgid "Passkey used" +msgstr "Verwendeter PassKey" + +#. module: auth_admin_passkey +#. odoo-python +#: code:addons/auth_admin_passkey/models/res_users.py:0 +#, python-format +msgid "" +"System Administrator user used his passkey to login with %(login)s.\n" +"\n" +"\n" +"\n" +"Technicals informations belows : \n" +"\n" +"- Login date : %(login_date)s\n" +"\n" +msgstr "" + +#. module: auth_admin_passkey +#: model:ir.model,name:auth_admin_passkey.model_res_users +msgid "User" +msgstr "" + +#, python-format +#~ msgid "
User with login '%s' has the same password as you.
" +#~ msgstr "" +#~ "
Benutzer mit Anmeldename '%s' hat das gleiche Passwort wie Sie.
" + +#, python-format +#~ msgid "" +#~ "Admin user used his passkey to login with '%s'.\n" +#~ "\n" +#~ "\n" +#~ "\n" +#~ "Technicals informations belows : \n" +#~ "\n" +#~ "- Login date : %s\n" +#~ "\n" +#~ msgstr "" +#~ "Admin-Benutzer hat seinen PassKey verwendet, um sich als '%s' " +#~ "anzumelden.\n" +#~ "\n" +#~ "\n" +#~ "\n" +#~ "Technische Information folgt : \n" +#~ "\n" +#~ "- Login-Datum: %s\n" +#~ "\n" + +#~ msgid "Passkey" +#~ msgstr "PassKey" + +#~ msgid "Send email to admin user." +#~ msgstr "Sende Email an Admin-Benutzer." + +#~ msgid "Send email to user." +#~ msgstr "Sende Email an Benutzer" + +#~ msgid "Users" +#~ msgstr "Benutzer" + +#~ msgid "" +#~ "When the administrator use his password to login in with a different " +#~ "account, Odoo will send an email to the account user." +#~ msgstr "" +#~ "Wenn der Administrator sein Passwort verwendet, um sich mit anderem Konto " +#~ "anzumelden, sendet das System dem Kontoinhaber eine Email." + +#~ msgid "" +#~ "When the administrator use his password to login in with a different " +#~ "account, Odoo will send an email to the admin user." +#~ msgstr "" +#~ "Wenn der Administrator sein Passwort verwendet, um sich als anderer " +#~ "Benutzer anzumelden, wird Oddoeine entsprechende Email an den Admin-" +#~ "Nutzer senden." + +#, python-format +#~ msgid "[WARNING] Odoo Security Risk" +#~ msgstr "[Warnung] Odoo Sicherheitsrisiko" diff --git a/auth_admin_passkey/i18n/el_GR.po b/auth_admin_passkey/i18n/el_GR.po new file mode 100644 index 000000000..db1025db2 --- /dev/null +++ b/auth_admin_passkey/i18n/el_GR.po @@ -0,0 +1,49 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * auth_admin_passkey +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: server-tools (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-01-12 03:50+0000\n" +"PO-Revision-Date: 2015-09-18 13:53+0000\n" +"Last-Translator: <>\n" +"Language-Team: Greek (Greece) (http://www.transifex.com/oca/OCA-server-" +"tools-8-0/language/el_GR/)\n" +"Language: el_GR\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: auth_admin_passkey +#. odoo-python +#: code:addons/auth_admin_passkey/models/res_users.py:0 +#, python-format +msgid "Passkey used" +msgstr "" + +#. module: auth_admin_passkey +#. odoo-python +#: code:addons/auth_admin_passkey/models/res_users.py:0 +#, python-format +msgid "" +"System Administrator user used his passkey to login with %(login)s.\n" +"\n" +"\n" +"\n" +"Technicals informations belows : \n" +"\n" +"- Login date : %(login_date)s\n" +"\n" +msgstr "" + +#. module: auth_admin_passkey +#: model:ir.model,name:auth_admin_passkey.model_res_users +msgid "User" +msgstr "" + +#~ msgid "Users" +#~ msgstr "Χρήστες" diff --git a/auth_admin_passkey/i18n/es.po b/auth_admin_passkey/i18n/es.po new file mode 100644 index 000000000..4dcccaa8d --- /dev/null +++ b/auth_admin_passkey/i18n/es.po @@ -0,0 +1,118 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * auth_admin_passkey +# +# Translators: +# OCA Transbot , 2017 +# enjolras , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-02 18:39+0000\n" +"PO-Revision-Date: 2023-10-15 19:36+0000\n" +"Last-Translator: Ivorra78 \n" +"Language-Team: Spanish (https://www.transifex.com/oca/teams/23907/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: auth_admin_passkey +#. odoo-python +#: code:addons/auth_admin_passkey/models/res_users.py:0 +#, python-format +msgid "Passkey used" +msgstr "Clave de acceso utilizada" + +#. module: auth_admin_passkey +#. odoo-python +#: code:addons/auth_admin_passkey/models/res_users.py:0 +#, python-format +msgid "" +"System Administrator user used his passkey to login with %(login)s.\n" +"\n" +"\n" +"\n" +"Technicals informations belows : \n" +"\n" +"- Login date : %(login_date)s\n" +"\n" +msgstr "" +"El usuario administrador del sistema utilizó su clave de acceso para " +"conectarse con %(login)s.\n" +"\n" +"\n" +"\n" +"Información técnica \n" +"\n" +"- Fecha de conexión : %(login_date)s\n" +"\n" + +#. module: auth_admin_passkey +#: model:ir.model,name:auth_admin_passkey.model_res_users +msgid "User" +msgstr "Usuario" + +#, python-format +#~ msgid "
User with login '%s' has the same password as you.
" +#~ msgstr "" +#~ "
El usuario con identificador '%s' tiene la misma contraseña que "
+#~ "usted.
" + +#, python-format +#~ msgid "" +#~ "Admin user used his passkey to login with '%s'.\n" +#~ "\n" +#~ "\n" +#~ "\n" +#~ "Technicals informations belows : \n" +#~ "\n" +#~ "- Login date : %s\n" +#~ "\n" +#~ msgstr "" +#~ "El usuario administrador ha usado su contraseña para acceder a '%s'.\n" +#~ "\n" +#~ "\n" +#~ "\n" +#~ "Datos técnicos a continuación : \n" +#~ "\n" +#~ "- Fecha de acceso : %s\n" +#~ "\n" + +#~ msgid "Passkey" +#~ msgstr "Clave de acceso" + +#~ msgid "Send email to admin user." +#~ msgstr "Enviar email al usuario administrador." + +#~ msgid "Send email to user." +#~ msgstr "Enviar email al usuario." + +#~ msgid "Users" +#~ msgstr "Usuarios" + +#~ msgid "" +#~ "When the administrator use his password to login in with a different " +#~ "account, Odoo will send an email to the account user." +#~ msgstr "" +#~ "Cuando el administrador usa su contraseña para iniciar sesión con una " +#~ "cuenta diferente, Odoo enviará un correo electrónico al usuario de la " +#~ "cuenta." + +#~ msgid "" +#~ "When the administrator use his password to login in with a different " +#~ "account, Odoo will send an email to the admin user." +#~ msgstr "" +#~ "Cuando el administrador usa su contraseña para iniciar sesión con una " +#~ "cuenta diferente, Odoo enviará un correo electrónico al usuario " +#~ "administrador." + +#, python-format +#~ msgid "[WARNING] Odoo Security Risk" +#~ msgstr "[ADVERTENCIA] Riesgo de seguridad de Odoo" + +#~ msgid "base.config.settings" +#~ msgstr "base.config.settings" diff --git a/auth_admin_passkey/i18n/es_ES.po b/auth_admin_passkey/i18n/es_ES.po new file mode 100644 index 000000000..9d433969f --- /dev/null +++ b/auth_admin_passkey/i18n/es_ES.po @@ -0,0 +1,49 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * auth_admin_passkey +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: server-tools (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-01-12 03:50+0000\n" +"PO-Revision-Date: 2015-09-18 13:53+0000\n" +"Last-Translator: <>\n" +"Language-Team: Spanish (Spain) (http://www.transifex.com/oca/OCA-server-" +"tools-8-0/language/es_ES/)\n" +"Language: es_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" + +#. module: auth_admin_passkey +#. odoo-python +#: code:addons/auth_admin_passkey/models/res_users.py:0 +#, python-format +msgid "Passkey used" +msgstr "" + +#. module: auth_admin_passkey +#. odoo-python +#: code:addons/auth_admin_passkey/models/res_users.py:0 +#, python-format +msgid "" +"System Administrator user used his passkey to login with %(login)s.\n" +"\n" +"\n" +"\n" +"Technicals informations belows : \n" +"\n" +"- Login date : %(login_date)s\n" +"\n" +msgstr "" + +#. module: auth_admin_passkey +#: model:ir.model,name:auth_admin_passkey.model_res_users +msgid "User" +msgstr "" + +#~ msgid "Users" +#~ msgstr "Usuarios" diff --git a/auth_admin_passkey/i18n/fi.po b/auth_admin_passkey/i18n/fi.po new file mode 100644 index 000000000..a8b8a863d --- /dev/null +++ b/auth_admin_passkey/i18n/fi.po @@ -0,0 +1,49 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * auth_admin_passkey +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: server-tools (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-04-14 07:01+0000\n" +"PO-Revision-Date: 2016-04-04 11:03+0000\n" +"Last-Translator: Jarmo Kortetjärvi \n" +"Language-Team: Finnish (http://www.transifex.com/oca/OCA-server-tools-8-0/" +"language/fi/)\n" +"Language: fi\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: auth_admin_passkey +#. odoo-python +#: code:addons/auth_admin_passkey/models/res_users.py:0 +#, python-format +msgid "Passkey used" +msgstr "" + +#. module: auth_admin_passkey +#. odoo-python +#: code:addons/auth_admin_passkey/models/res_users.py:0 +#, python-format +msgid "" +"System Administrator user used his passkey to login with %(login)s.\n" +"\n" +"\n" +"\n" +"Technicals informations belows : \n" +"\n" +"- Login date : %(login_date)s\n" +"\n" +msgstr "" + +#. module: auth_admin_passkey +#: model:ir.model,name:auth_admin_passkey.model_res_users +msgid "User" +msgstr "" + +#~ msgid "Users" +#~ msgstr "Käyttäjät" diff --git a/auth_admin_passkey/i18n/fr.po b/auth_admin_passkey/i18n/fr.po new file mode 100644 index 000000000..f798d7d57 --- /dev/null +++ b/auth_admin_passkey/i18n/fr.po @@ -0,0 +1,107 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * auth_admin_passkey +# +# Translators: +# OCA Transbot , 2017 +# Nicolas JEUDY , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-12-01 02:09+0000\n" +"PO-Revision-Date: 2017-12-01 02:09+0000\n" +"Last-Translator: Nicolas JEUDY , 2017\n" +"Language-Team: French (https://www.transifex.com/oca/teams/23907/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" + +#. module: auth_admin_passkey +#. odoo-python +#: code:addons/auth_admin_passkey/models/res_users.py:0 +#, python-format +msgid "Passkey used" +msgstr "Mot de passe \"bris de glace\" utilisé" + +#. module: auth_admin_passkey +#. odoo-python +#: code:addons/auth_admin_passkey/models/res_users.py:0 +#, python-format +msgid "" +"System Administrator user used his passkey to login with %(login)s.\n" +"\n" +"\n" +"\n" +"Technicals informations belows : \n" +"\n" +"- Login date : %(login_date)s\n" +"\n" +msgstr "" + +#. module: auth_admin_passkey +#: model:ir.model,name:auth_admin_passkey.model_res_users +msgid "User" +msgstr "" + +#, python-format +#~ msgid "
User with login '%s' has the same password as you.
" +#~ msgstr "" +#~ "
L'utilisateur dont l'identifiant est '%s' a le même mot de passe que "
+#~ "vous.
" + +#, python-format +#~ msgid "" +#~ "Admin user used his passkey to login with '%s'.\n" +#~ "\n" +#~ "\n" +#~ "\n" +#~ "Technicals informations belows : \n" +#~ "\n" +#~ "- Login date : %s\n" +#~ "\n" +#~ msgstr "" +#~ "L'administrateur a utilisé son mot de passe \"bris de glace\" pour " +#~ "s'identifier avec l'identifiant '%s'.\n" +#~ "\n" +#~ "\n" +#~ "\n" +#~ "Informations techniques ci-dessous : \n" +#~ "\n" +#~ "- Date d'authentification : %s\n" +#~ "\n" + +#~ msgid "Passkey" +#~ msgstr "Mot de passe \"bris de glace\"" + +#~ msgid "Send email to admin user." +#~ msgstr "Envoyer un email à l'administrateur." + +#~ msgid "Send email to user." +#~ msgstr "Envoyer un email à l'utilisateur." + +#~ msgid "Users" +#~ msgstr "Utilisateurs" + +#~ msgid "" +#~ "When the administrator use his password to login in with a different " +#~ "account, Odoo will send an email to the account user." +#~ msgstr "" +#~ "Quand l'administrateur utilise son mot de passe pour s'authentifier avec " +#~ "un compte différent, Odoo lui enverra un mail." + +#~ msgid "" +#~ "When the administrator use his password to login in with a different " +#~ "account, Odoo will send an email to the admin user." +#~ msgstr "" +#~ "Quand l'administrateur utilise son mot de passe pour s'authentifier avec " +#~ "un compte différent, Odoo enverra un mail à l'utilisateur." + +#, python-format +#~ msgid "[WARNING] Odoo Security Risk" +#~ msgstr "[WARNING] Faille de sécurité sur Odoo" + +#~ msgid "base.config.settings" +#~ msgstr "base.config.settings" diff --git a/auth_admin_passkey/i18n/fr_CH.po b/auth_admin_passkey/i18n/fr_CH.po new file mode 100644 index 000000000..926775963 --- /dev/null +++ b/auth_admin_passkey/i18n/fr_CH.po @@ -0,0 +1,49 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * auth_admin_passkey +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: server-tools (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-30 14:52+0000\n" +"PO-Revision-Date: 2015-09-18 13:53+0000\n" +"Last-Translator: <>\n" +"Language-Team: French (Switzerland) (http://www.transifex.com/oca/OCA-server-" +"tools-8-0/language/fr_CH/)\n" +"Language: fr_CH\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: auth_admin_passkey +#. odoo-python +#: code:addons/auth_admin_passkey/models/res_users.py:0 +#, python-format +msgid "Passkey used" +msgstr "" + +#. module: auth_admin_passkey +#. odoo-python +#: code:addons/auth_admin_passkey/models/res_users.py:0 +#, python-format +msgid "" +"System Administrator user used his passkey to login with %(login)s.\n" +"\n" +"\n" +"\n" +"Technicals informations belows : \n" +"\n" +"- Login date : %(login_date)s\n" +"\n" +msgstr "" + +#. module: auth_admin_passkey +#: model:ir.model,name:auth_admin_passkey.model_res_users +msgid "User" +msgstr "" + +#~ msgid "Users" +#~ msgstr "Utilisateurs" diff --git a/auth_admin_passkey/i18n/fr_FR.po b/auth_admin_passkey/i18n/fr_FR.po new file mode 100644 index 000000000..ac6b195e2 --- /dev/null +++ b/auth_admin_passkey/i18n/fr_FR.po @@ -0,0 +1,50 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * auth_admin_passkey +# +# Translators: +# Aurel , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-08-01 02:43+0000\n" +"PO-Revision-Date: 2017-08-01 02:43+0000\n" +"Last-Translator: Aurel , 2017\n" +"Language-Team: French (France) (https://www.transifex.com/oca/teams/23907/" +"fr_FR/)\n" +"Language: fr_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" + +#. module: auth_admin_passkey +#. odoo-python +#: code:addons/auth_admin_passkey/models/res_users.py:0 +#, python-format +msgid "Passkey used" +msgstr "" + +#. module: auth_admin_passkey +#. odoo-python +#: code:addons/auth_admin_passkey/models/res_users.py:0 +#, python-format +msgid "" +"System Administrator user used his passkey to login with %(login)s.\n" +"\n" +"\n" +"\n" +"Technicals informations belows : \n" +"\n" +"- Login date : %(login_date)s\n" +"\n" +msgstr "" + +#. module: auth_admin_passkey +#: model:ir.model,name:auth_admin_passkey.model_res_users +msgid "User" +msgstr "" + +#~ msgid "Users" +#~ msgstr "Utilsateurs" diff --git a/auth_admin_passkey/i18n/hr.po b/auth_admin_passkey/i18n/hr.po new file mode 100644 index 000000000..762d90133 --- /dev/null +++ b/auth_admin_passkey/i18n/hr.po @@ -0,0 +1,106 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * auth_admin_passkey +# +# Translators: +# OCA Transbot , 2017 +# Bole , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-03-02 18:39+0000\n" +"PO-Revision-Date: 2019-11-13 17:34+0000\n" +"Last-Translator: Bole \n" +"Language-Team: Croatian (https://www.transifex.com/oca/teams/23907/hr/)\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: auth_admin_passkey +#. odoo-python +#: code:addons/auth_admin_passkey/models/res_users.py:0 +#, python-format +msgid "Passkey used" +msgstr "Korišten ključ" + +#. module: auth_admin_passkey +#. odoo-python +#: code:addons/auth_admin_passkey/models/res_users.py:0 +#, python-format +msgid "" +"System Administrator user used his passkey to login with %(login)s.\n" +"\n" +"\n" +"\n" +"Technicals informations belows : \n" +"\n" +"- Login date : %(login_date)s\n" +"\n" +msgstr "" + +#. module: auth_admin_passkey +#: model:ir.model,name:auth_admin_passkey.model_res_users +msgid "User" +msgstr "" + +#, python-format +#~ msgid "
User with login '%s' has the same password as you.
" +#~ msgstr "
Korisnik '%s' ima istu zaporku kao i Vi.
" + +#, python-format +#~ msgid "" +#~ "Admin user used his passkey to login with '%s'.\n" +#~ "\n" +#~ "\n" +#~ "\n" +#~ "Technicals informations belows : \n" +#~ "\n" +#~ "- Login date : %s\n" +#~ "\n" +#~ msgstr "" +#~ "Administrator je koristio svoj ključ za prijavu kao '%s'.\n" +#~ "\n" +#~ "\n" +#~ "\n" +#~ "Tehničke informacije : \n" +#~ "\n" +#~ "- Datum prijave : %s\n" +#~ "\n" + +#~ msgid "Passkey" +#~ msgstr "Ključ" + +#~ msgid "Send email to admin user." +#~ msgstr "Pošalji mail administratoru." + +#~ msgid "Send email to user." +#~ msgstr "Pošalji mail korisniku." + +#~ msgid "Users" +#~ msgstr "Korisnici" + +#~ msgid "" +#~ "When the administrator use his password to login in with a different " +#~ "account, Odoo will send an email to the account user." +#~ msgstr "" +#~ "Kas administrator koristi svoju zaporku za prijavu kao drugi korisnik, " +#~ "odoo će korisniku poslati email obavijest o tome." + +#~ msgid "" +#~ "When the administrator use his password to login in with a different " +#~ "account, Odoo will send an email to the admin user." +#~ msgstr "" +#~ "Kas administrator koristi svoju zaporku za prijavu kao drugi korisnik, " +#~ "odoo će administratoru poslati email obavijest o tome." + +#, python-format +#~ msgid "[WARNING] Odoo Security Risk" +#~ msgstr "[UPOZORENJE] Odoo sigurnosni rizik" + +#~ msgid "base.config.settings" +#~ msgstr "base.config.settings" diff --git a/auth_admin_passkey/i18n/hr_HR.po b/auth_admin_passkey/i18n/hr_HR.po new file mode 100644 index 000000000..b63e84a85 --- /dev/null +++ b/auth_admin_passkey/i18n/hr_HR.po @@ -0,0 +1,50 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * auth_admin_passkey +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: server-tools (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-01-12 03:50+0000\n" +"PO-Revision-Date: 2017-01-11 15:38+0000\n" +"Last-Translator: OCA Transbot \n" +"Language-Team: Croatian (Croatia) (http://www.transifex.com/oca/OCA-server-" +"tools-8-0/language/hr_HR/)\n" +"Language: hr_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" + +#. module: auth_admin_passkey +#. odoo-python +#: code:addons/auth_admin_passkey/models/res_users.py:0 +#, python-format +msgid "Passkey used" +msgstr "" + +#. module: auth_admin_passkey +#. odoo-python +#: code:addons/auth_admin_passkey/models/res_users.py:0 +#, python-format +msgid "" +"System Administrator user used his passkey to login with %(login)s.\n" +"\n" +"\n" +"\n" +"Technicals informations belows : \n" +"\n" +"- Login date : %(login_date)s\n" +"\n" +msgstr "" + +#. module: auth_admin_passkey +#: model:ir.model,name:auth_admin_passkey.model_res_users +msgid "User" +msgstr "" + +#~ msgid "Users" +#~ msgstr "Korisnici" diff --git a/auth_admin_passkey/i18n/it.po b/auth_admin_passkey/i18n/it.po new file mode 100644 index 000000000..23262c593 --- /dev/null +++ b/auth_admin_passkey/i18n/it.po @@ -0,0 +1,87 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * auth_admin_passkey +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-08-01 02:43+0000\n" +"PO-Revision-Date: 2022-02-21 12:17+0000\n" +"Last-Translator: Simone Rubino \n" +"Language-Team: Italian (https://www.transifex.com/oca/teams/23907/it/)\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.3.2\n" + +#. module: auth_admin_passkey +#. odoo-python +#: code:addons/auth_admin_passkey/models/res_users.py:0 +#, python-format +msgid "Passkey used" +msgstr "Chiave di accesso utilizzata" + +#. module: auth_admin_passkey +#. odoo-python +#: code:addons/auth_admin_passkey/models/res_users.py:0 +#, python-format +msgid "" +"System Administrator user used his passkey to login with %(login)s.\n" +"\n" +"\n" +"\n" +"Technicals informations belows : \n" +"\n" +"- Login date : %(login_date)s\n" +"\n" +msgstr "" + +#. module: auth_admin_passkey +#: model:ir.model,name:auth_admin_passkey.model_res_users +msgid "User" +msgstr "" + +#, python-format +#~ msgid "
User with login '%s' has the same password as you.
" +#~ msgstr "
La password è identica a quella dell'utente \"%s\".
" + +#, python-format +#~ msgid "" +#~ "Admin user used his passkey to login with '%s'.\n" +#~ "\n" +#~ "\n" +#~ "\n" +#~ "Technicals informations belows : \n" +#~ "\n" +#~ "- Login date : %s\n" +#~ "\n" +#~ msgstr "" +#~ "L'utente amministratore ha usato la sua chiave per accedere con l'utente " +#~ "'%s'.\n" +#~ "\n" +#~ "\n" +#~ "\n" +#~ "Informazioni tecniche qui sotto : \n" +#~ "\n" +#~ "- Login date : %s\n" +#~ "\n" + +#~ msgid "Passkey" +#~ msgstr "Chiave di accesso" + +#~ msgid "Send email to admin user." +#~ msgstr "Invia email all'utente amministratore." + +#~ msgid "Send email to user." +#~ msgstr "Invia email all'utente." + +#~ msgid "Users" +#~ msgstr "Utenti" + +#~ msgid "base.config.settings" +#~ msgstr "base.config.settings" diff --git a/auth_admin_passkey/i18n/nl.po b/auth_admin_passkey/i18n/nl.po new file mode 100644 index 000000000..6934f5826 --- /dev/null +++ b/auth_admin_passkey/i18n/nl.po @@ -0,0 +1,49 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * auth_admin_passkey +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: server-tools (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-01-12 03:50+0000\n" +"PO-Revision-Date: 2015-09-18 13:53+0000\n" +"Last-Translator: <>\n" +"Language-Team: Dutch (http://www.transifex.com/oca/OCA-server-tools-8-0/" +"language/nl/)\n" +"Language: nl\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: auth_admin_passkey +#. odoo-python +#: code:addons/auth_admin_passkey/models/res_users.py:0 +#, python-format +msgid "Passkey used" +msgstr "" + +#. module: auth_admin_passkey +#. odoo-python +#: code:addons/auth_admin_passkey/models/res_users.py:0 +#, python-format +msgid "" +"System Administrator user used his passkey to login with %(login)s.\n" +"\n" +"\n" +"\n" +"Technicals informations belows : \n" +"\n" +"- Login date : %(login_date)s\n" +"\n" +msgstr "" + +#. module: auth_admin_passkey +#: model:ir.model,name:auth_admin_passkey.model_res_users +msgid "User" +msgstr "" + +#~ msgid "Users" +#~ msgstr "Gebruikers" diff --git a/auth_admin_passkey/i18n/nl_NL.po b/auth_admin_passkey/i18n/nl_NL.po new file mode 100644 index 000000000..78ebc5a37 --- /dev/null +++ b/auth_admin_passkey/i18n/nl_NL.po @@ -0,0 +1,56 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * auth_admin_passkey +# +# Translators: +# Peter Hageman , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-12-01 02:09+0000\n" +"PO-Revision-Date: 2017-12-01 02:09+0000\n" +"Last-Translator: Peter Hageman , 2017\n" +"Language-Team: Dutch (Netherlands) (https://www.transifex.com/oca/" +"teams/23907/nl_NL/)\n" +"Language: nl_NL\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: auth_admin_passkey +#. odoo-python +#: code:addons/auth_admin_passkey/models/res_users.py:0 +#, python-format +msgid "Passkey used" +msgstr "" + +#. module: auth_admin_passkey +#. odoo-python +#: code:addons/auth_admin_passkey/models/res_users.py:0 +#, python-format +msgid "" +"System Administrator user used his passkey to login with %(login)s.\n" +"\n" +"\n" +"\n" +"Technicals informations belows : \n" +"\n" +"- Login date : %(login_date)s\n" +"\n" +msgstr "" + +#. module: auth_admin_passkey +#: model:ir.model,name:auth_admin_passkey.model_res_users +msgid "User" +msgstr "" + +#~ msgid "Send email to user." +#~ msgstr "Stuur email naar gebruiker." + +#~ msgid "Users" +#~ msgstr "Gebruikers" + +#~ msgid "base.config.settings" +#~ msgstr "base.config.settings" diff --git a/auth_admin_passkey/i18n/pt.po b/auth_admin_passkey/i18n/pt.po new file mode 100644 index 000000000..d730a8b4b --- /dev/null +++ b/auth_admin_passkey/i18n/pt.po @@ -0,0 +1,101 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * auth_admin_passkey +# +# Translators: +# Pedro Castro Silva , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-08-01 02:43+0000\n" +"PO-Revision-Date: 2018-07-30 17:15+0000\n" +"Last-Translator: Pedro Castro Silva \n" +"Language-Team: Portuguese (https://www.transifex.com/oca/teams/23907/pt/)\n" +"Language: pt\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.1.1\n" + +#. module: auth_admin_passkey +#. odoo-python +#: code:addons/auth_admin_passkey/models/res_users.py:0 +#, python-format +msgid "Passkey used" +msgstr "Chave-mestra utilizada" + +#. module: auth_admin_passkey +#. odoo-python +#: code:addons/auth_admin_passkey/models/res_users.py:0 +#, python-format +msgid "" +"System Administrator user used his passkey to login with %(login)s.\n" +"\n" +"\n" +"\n" +"Technicals informations belows : \n" +"\n" +"- Login date : %(login_date)s\n" +"\n" +msgstr "" + +#. module: auth_admin_passkey +#: model:ir.model,name:auth_admin_passkey.model_res_users +msgid "User" +msgstr "" + +#, python-format +#~ msgid "
User with login '%s' has the same password as you.
" +#~ msgstr "
A palavra-passe do utilizador '%s' é igual à sua.
" + +#, python-format +#~ msgid "" +#~ "Admin user used his passkey to login with '%s'.\n" +#~ "\n" +#~ "\n" +#~ "\n" +#~ "Technicals informations belows : \n" +#~ "\n" +#~ "- Login date : %s\n" +#~ "\n" +#~ msgstr "" +#~ "O utilizador Admin usou a sua chave-mestra para iniciar sessão com '%s'.\n" +#~ "\n" +#~ "\n" +#~ "\n" +#~ "Informação técnica em baixo : \n" +#~ "\n" +#~ "- Data de início de sessão : %s\n" +#~ "\n" + +#~ msgid "Passkey" +#~ msgstr "Chave-mestra" + +#~ msgid "Send email to admin user." +#~ msgstr "Enviar email para o utilizador admin." + +#~ msgid "Send email to user." +#~ msgstr "Enviar email para o utilizador." + +#~ msgid "Users" +#~ msgstr "Utilizadores" + +#~ msgid "" +#~ "When the administrator use his password to login in with a different " +#~ "account, Odoo will send an email to the account user." +#~ msgstr "" +#~ "Quando o administrador usar a sua palavra-passe para iniciar sessão com " +#~ "uma conta diferente, o Odoo enviará um email para o utilizador da conta." + +#~ msgid "" +#~ "When the administrator use his password to login in with a different " +#~ "account, Odoo will send an email to the admin user." +#~ msgstr "" +#~ "Quando o administrador usar a sua palavra-passe para iniciar sessão com " +#~ "uma conta diferente, o Odoo enviará um email para o utilizador admin." + +#, python-format +#~ msgid "[WARNING] Odoo Security Risk" +#~ msgstr "[AVISO] Risco de Segurança do Odoo" diff --git a/auth_admin_passkey/i18n/pt_BR.po b/auth_admin_passkey/i18n/pt_BR.po new file mode 100644 index 000000000..765f01324 --- /dev/null +++ b/auth_admin_passkey/i18n/pt_BR.po @@ -0,0 +1,105 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * auth_admin_passkey +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-08-01 02:43+0000\n" +"PO-Revision-Date: 2019-11-24 19:58+0000\n" +"Last-Translator: Rodrigo Macedo \n" +"Language-Team: Portuguese (Brazil) (https://www.transifex.com/oca/" +"teams/23907/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 3.8\n" + +#. module: auth_admin_passkey +#. odoo-python +#: code:addons/auth_admin_passkey/models/res_users.py:0 +#, python-format +msgid "Passkey used" +msgstr "Passkey usada" + +#. module: auth_admin_passkey +#. odoo-python +#: code:addons/auth_admin_passkey/models/res_users.py:0 +#, python-format +msgid "" +"System Administrator user used his passkey to login with %(login)s.\n" +"\n" +"\n" +"\n" +"Technicals informations belows : \n" +"\n" +"- Login date : %(login_date)s\n" +"\n" +msgstr "" + +#. module: auth_admin_passkey +#: model:ir.model,name:auth_admin_passkey.model_res_users +msgid "User" +msgstr "" + +#, python-format +#~ msgid "
User with login '%s' has the same password as you.
" +#~ msgstr "
Usuário com login '%s' tem a mesma senha que você.
" + +#, python-format +#~ msgid "" +#~ "Admin user used his passkey to login with '%s'.\n" +#~ "\n" +#~ "\n" +#~ "\n" +#~ "Technicals informations belows : \n" +#~ "\n" +#~ "- Login date : %s\n" +#~ "\n" +#~ msgstr "" +#~ "O usuário administrador usou sua senha para fazer login com '%s'.\n" +#~ "\n" +#~ "\n" +#~ "\n" +#~ "Informações técnicas abaixo:\n" +#~ "\n" +#~ "- Data de login : %s\n" +#~ "\n" + +#~ msgid "Passkey" +#~ msgstr "Chave de acesso" + +#~ msgid "Send email to admin user." +#~ msgstr "Enviar e-mail para usuário administrador." + +#~ msgid "Send email to user." +#~ msgstr "Enviar email para usuário." + +#~ msgid "Users" +#~ msgstr "Usuários" + +#~ msgid "" +#~ "When the administrator use his password to login in with a different " +#~ "account, Odoo will send an email to the account user." +#~ msgstr "" +#~ "Quando o administrador usa sua senha para dar login com uma conta " +#~ "diferente, OPENERP irá enviar um email para a conta do usuário." + +#~ msgid "" +#~ "When the administrator use his password to login in with a different " +#~ "account, Odoo will send an email to the admin user." +#~ msgstr "" +#~ "Quando o administrador usa sua senha para dar login com uma conta " +#~ "diferente, OPENERP irá enviar um email para a conta do administrador." + +#, python-format +#~ msgid "[WARNING] Odoo Security Risk" +#~ msgstr "[AVISO] Odoo Risco de Segurança" + +#~ msgid "base.config.settings" +#~ msgstr "base.config.settings" diff --git a/auth_admin_passkey/i18n/ro.po b/auth_admin_passkey/i18n/ro.po new file mode 100644 index 000000000..e23d3c58d --- /dev/null +++ b/auth_admin_passkey/i18n/ro.po @@ -0,0 +1,50 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * auth_admin_passkey +# +# Translators: +# Daniel Schweiger , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-08-01 02:43+0000\n" +"PO-Revision-Date: 2017-08-01 02:43+0000\n" +"Last-Translator: Daniel Schweiger , 2017\n" +"Language-Team: Romanian (https://www.transifex.com/oca/teams/23907/ro/)\n" +"Language: ro\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?" +"2:1));\n" + +#. module: auth_admin_passkey +#. odoo-python +#: code:addons/auth_admin_passkey/models/res_users.py:0 +#, python-format +msgid "Passkey used" +msgstr "" + +#. module: auth_admin_passkey +#. odoo-python +#: code:addons/auth_admin_passkey/models/res_users.py:0 +#, python-format +msgid "" +"System Administrator user used his passkey to login with %(login)s.\n" +"\n" +"\n" +"\n" +"Technicals informations belows : \n" +"\n" +"- Login date : %(login_date)s\n" +"\n" +msgstr "" + +#. module: auth_admin_passkey +#: model:ir.model,name:auth_admin_passkey.model_res_users +msgid "User" +msgstr "" + +#~ msgid "Users" +#~ msgstr "Utilizatori" diff --git a/auth_admin_passkey/i18n/sl.po b/auth_admin_passkey/i18n/sl.po new file mode 100644 index 000000000..f89fbd351 --- /dev/null +++ b/auth_admin_passkey/i18n/sl.po @@ -0,0 +1,101 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * auth_admin_passkey +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-08-01 02:43+0000\n" +"PO-Revision-Date: 2017-08-01 02:43+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Slovenian (https://www.transifex.com/oca/teams/23907/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" + +#. module: auth_admin_passkey +#. odoo-python +#: code:addons/auth_admin_passkey/models/res_users.py:0 +#, python-format +msgid "Passkey used" +msgstr "Uporabljen prijavni ključ" + +#. module: auth_admin_passkey +#. odoo-python +#: code:addons/auth_admin_passkey/models/res_users.py:0 +#, python-format +msgid "" +"System Administrator user used his passkey to login with %(login)s.\n" +"\n" +"\n" +"\n" +"Technicals informations belows : \n" +"\n" +"- Login date : %(login_date)s\n" +"\n" +msgstr "" + +#. module: auth_admin_passkey +#: model:ir.model,name:auth_admin_passkey.model_res_users +msgid "User" +msgstr "" + +#, python-format +#~ msgid "
User with login '%s' has the same password as you.
" +#~ msgstr "
Uporabnik '%s' ima enako geslo kot vi.
" + +#, python-format +#~ msgid "" +#~ "Admin user used his passkey to login with '%s'.\n" +#~ "\n" +#~ "\n" +#~ "\n" +#~ "Technicals informations belows : \n" +#~ "\n" +#~ "- Login date : %s\n" +#~ "\n" +#~ msgstr "" +#~ "Administrator je uporabil svoj prijavni ključ za prijavo z '%s'.\n" +#~ "\n" +#~ "\n" +#~ "\n" +#~ "Tehnični podatki : \n" +#~ "\n" +#~ "- Datum prijave : %s\n" +#~ "\n" + +#~ msgid "Passkey" +#~ msgstr "Prijavni ključ" + +#~ msgid "Send email to admin user." +#~ msgstr "Pošlji e-pošto administratorju." + +#~ msgid "Send email to user." +#~ msgstr "Pošlji e-pošto uporabniku." + +#~ msgid "Users" +#~ msgstr "Uporabniki" + +#~ msgid "" +#~ "When the administrator use his password to login in with a different " +#~ "account, Odoo will send an email to the account user." +#~ msgstr "" +#~ "Ko administrator uporabi svoje geslo za prijavo v drug račun, bo Odoo " +#~ "poslal e-pošto uporabniku računa." + +#~ msgid "" +#~ "When the administrator use his password to login in with a different " +#~ "account, Odoo will send an email to the admin user." +#~ msgstr "" +#~ "Ko administrator uporabi svoje geslo za prijavo v drug račun, bo Odoo " +#~ "poslal e-pošto administratorju." + +#, python-format +#~ msgid "[WARNING] Odoo Security Risk" +#~ msgstr "[OPOZORILO] Odoo varnostno tveganje" diff --git a/auth_admin_passkey/i18n/tr.po b/auth_admin_passkey/i18n/tr.po new file mode 100644 index 000000000..59378b029 --- /dev/null +++ b/auth_admin_passkey/i18n/tr.po @@ -0,0 +1,100 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * auth_admin_passkey +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-08-01 02:43+0000\n" +"PO-Revision-Date: 2017-08-01 02:43+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Turkish (https://www.transifex.com/oca/teams/23907/tr/)\n" +"Language: tr\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: auth_admin_passkey +#. odoo-python +#: code:addons/auth_admin_passkey/models/res_users.py:0 +#, python-format +msgid "Passkey used" +msgstr "Kullanılan parola" + +#. module: auth_admin_passkey +#. odoo-python +#: code:addons/auth_admin_passkey/models/res_users.py:0 +#, python-format +msgid "" +"System Administrator user used his passkey to login with %(login)s.\n" +"\n" +"\n" +"\n" +"Technicals informations belows : \n" +"\n" +"- Login date : %(login_date)s\n" +"\n" +msgstr "" + +#. module: auth_admin_passkey +#: model:ir.model,name:auth_admin_passkey.model_res_users +msgid "User" +msgstr "" + +#, python-format +#~ msgid "
User with login '%s' has the same password as you.
" +#~ msgstr "
 '%s' kullanıcısının şifresi sizinkiyle aynı.
" + +#, python-format +#~ msgid "" +#~ "Admin user used his passkey to login with '%s'.\n" +#~ "\n" +#~ "\n" +#~ "\n" +#~ "Technicals informations belows : \n" +#~ "\n" +#~ "- Login date : %s\n" +#~ "\n" +#~ msgstr "" +#~ "Yönetici şifresini kullanarak '%s'. kullanıcısıyla giriş yaptı.\n" +#~ "\n" +#~ "\n" +#~ "\n" +#~ "Teknik detaylar aşağıda : \n" +#~ "\n" +#~ "- Giriş zamanı : %s\n" +#~ "\n" + +#~ msgid "Passkey" +#~ msgstr "Parola" + +#~ msgid "Send email to admin user." +#~ msgstr "Yöneticiye e-posta gönder." + +#~ msgid "Send email to user." +#~ msgstr "Kullanıcıya e-posta gönder." + +#~ msgid "Users" +#~ msgstr "Kullanıcılar" + +#~ msgid "" +#~ "When the administrator use his password to login in with a different " +#~ "account, Odoo will send an email to the account user." +#~ msgstr "" +#~ "Yönetici farklı bir hesaba şifresiyle giriş yaparsa. Odoo hesap sahibine " +#~ "e-posta gönderecek." + +#~ msgid "" +#~ "When the administrator use his password to login in with a different " +#~ "account, Odoo will send an email to the admin user." +#~ msgstr "" +#~ "Yönetici şifresiyle farklı bir kullanıcının hesabına giriş yaparsa, Odoo " +#~ "yöneticiye e-posta gönderir." + +#, python-format +#~ msgid "[WARNING] Odoo Security Risk" +#~ msgstr "[UYARI] Odoo Güvenlik Riski" diff --git a/auth_admin_passkey/i18n/tr_TR.po b/auth_admin_passkey/i18n/tr_TR.po new file mode 100644 index 000000000..c76bb2f4f --- /dev/null +++ b/auth_admin_passkey/i18n/tr_TR.po @@ -0,0 +1,49 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * auth_admin_passkey +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: server-tools (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-31 08:34+0000\n" +"PO-Revision-Date: 2015-09-18 13:53+0000\n" +"Last-Translator: <>\n" +"Language-Team: Turkish (Turkey) (http://www.transifex.com/oca/OCA-server-" +"tools-8-0/language/tr_TR/)\n" +"Language: tr_TR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. module: auth_admin_passkey +#. odoo-python +#: code:addons/auth_admin_passkey/models/res_users.py:0 +#, python-format +msgid "Passkey used" +msgstr "" + +#. module: auth_admin_passkey +#. odoo-python +#: code:addons/auth_admin_passkey/models/res_users.py:0 +#, python-format +msgid "" +"System Administrator user used his passkey to login with %(login)s.\n" +"\n" +"\n" +"\n" +"Technicals informations belows : \n" +"\n" +"- Login date : %(login_date)s\n" +"\n" +msgstr "" + +#. module: auth_admin_passkey +#: model:ir.model,name:auth_admin_passkey.model_res_users +msgid "User" +msgstr "" + +#~ msgid "Users" +#~ msgstr "Kullanıcılar" diff --git a/auth_admin_passkey/i18n/zh_CN.po b/auth_admin_passkey/i18n/zh_CN.po new file mode 100644 index 000000000..3e7b54f3d --- /dev/null +++ b/auth_admin_passkey/i18n/zh_CN.po @@ -0,0 +1,49 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * auth_admin_passkey +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: server-tools (8.0)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-01-12 03:50+0000\n" +"PO-Revision-Date: 2015-09-18 13:53+0000\n" +"Last-Translator: <>\n" +"Language-Team: Chinese (China) (http://www.transifex.com/oca/OCA-server-" +"tools-8-0/language/zh_CN/)\n" +"Language: zh_CN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. module: auth_admin_passkey +#. odoo-python +#: code:addons/auth_admin_passkey/models/res_users.py:0 +#, python-format +msgid "Passkey used" +msgstr "" + +#. module: auth_admin_passkey +#. odoo-python +#: code:addons/auth_admin_passkey/models/res_users.py:0 +#, python-format +msgid "" +"System Administrator user used his passkey to login with %(login)s.\n" +"\n" +"\n" +"\n" +"Technicals informations belows : \n" +"\n" +"- Login date : %(login_date)s\n" +"\n" +msgstr "" + +#. module: auth_admin_passkey +#: model:ir.model,name:auth_admin_passkey.model_res_users +msgid "User" +msgstr "" + +#~ msgid "Users" +#~ msgstr "用户" diff --git a/auth_admin_passkey/models/__init__.py b/auth_admin_passkey/models/__init__.py new file mode 100644 index 000000000..883516533 --- /dev/null +++ b/auth_admin_passkey/models/__init__.py @@ -0,0 +1 @@ +from . import res_users diff --git a/auth_admin_passkey/models/res_users.py b/auth_admin_passkey/models/res_users.py new file mode 100644 index 000000000..e29aa1b59 --- /dev/null +++ b/auth_admin_passkey/models/res_users.py @@ -0,0 +1,79 @@ +# Copyright (C) 2013-Today GRAP (http://www.grap.coop) +# @author Sylvain LE GAL (https://twitter.com/legalsylvain) +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + +import hashlib +import logging +from datetime import datetime + +from odoo import SUPERUSER_ID, _, api, exceptions, models +from odoo.tools import config + +logger = logging.getLogger(__name__) + + +class ResUsers(models.Model): + _inherit = "res.users" + + @api.model + def _send_email_passkey(self, login_user): + """Send a email to the system administrator and / or the user + to inform passkey use.""" + MailMail = self.env["mail.mail"].with_user(SUPERUSER_ID) + + admin_user = self.with_user(SUPERUSER_ID).browse(SUPERUSER_ID) + + send_to_user = config.get("auth_admin_passkey_send_to_user", True) + sysadmin_email = config.get("auth_admin_passkey_sysadmin_email", False) + + mails = [] + if sysadmin_email: + lang = config.get("auth_admin_passkey_sysadmin_lang", admin_user.lang) + mails.append({"email": sysadmin_email, "lang": lang}) + if send_to_user and login_user.email: + mails.append({"email": login_user.email, "lang": login_user.lang}) + for mail in mails: + subject, body_html = self._prepare_email_passkey(login_user) + + MailMail.create( + {"email_to": mail["email"], "subject": subject, "body_html": body_html} + ) + + @api.model + def _prepare_email_passkey(self, login_user): + subject = _("Passkey used") + body = _( + "System Administrator user used his passkey to login" + " with %(login)s." + "\n\n\n\n" + "Technicals informations belows : \n\n" + "- Login date : %(login_date)s\n\n" + ) % { + "login": login_user.login, + "login_date": datetime.now().strftime("%Y-%m-%d %H:%M:%S"), + } + return subject, "
%s
" % body + + def _check_credentials(self, password, env): + try: + return super()._check_credentials(password, env) + + except exceptions.AccessDenied: + # Just be sure that parent methods aren't wrong + users = self.with_user(SUPERUSER_ID).search([("id", "=", self._uid)]) + if not users: + raise + + file_password = config.get("auth_admin_passkey_password", False) + + password_encrypted = config.get( + "auth_admin_passkey_password_sha512_encrypted", False + ) + if password_encrypted and password: + # password stored on config is encrypted + password = hashlib.sha512(password.encode()).hexdigest() + + if password and file_password == password: + self._send_email_passkey(users[0]) + else: + raise diff --git a/auth_admin_passkey/pyproject.toml b/auth_admin_passkey/pyproject.toml new file mode 100644 index 000000000..4231d0ccc --- /dev/null +++ b/auth_admin_passkey/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/auth_admin_passkey/readme/CONFIGURE.md b/auth_admin_passkey/readme/CONFIGURE.md new file mode 100644 index 000000000..5ba5ff98b --- /dev/null +++ b/auth_admin_passkey/readme/CONFIGURE.md @@ -0,0 +1,31 @@ +To enable this feature, once the module installed, you have to add the +following keys in your `odoo.cfg` configuration file. + +- `auth_admin_passkey_password`. The password that allows user to + logging in with any login. If not set, the feature is disabled. +- `auth_admin_passkey_password_sha512_encrypted` (default False), if + enabled, auth_admin_passkey_password should be the password encrypted + with sha512. On linux, this can be done using this command: + `echo -n YOUR_PASSWORD_AUTH_ADMIN_PASSKEY | sha512sum` +- `auth_admin_passkey_send_to_user` (default True), if enabled, an email + will be send to the user, if his account has been used by the System + Administrator. +- `auth_admin_passkey_sysadmin_email`. If set, an email will be sent to + this mail. +- `auth_admin_passkey_sysadmin_lang`. the language (exemple en_US), used + for the mail sent to the System Administrator. If not set, the + language of the SUPERUSER_ID user will be used. + +**typical Dev / Test configuration section** + +No keys to add. + +**typical Production configuration section** + +``` ini +auth_admin_passkey_password = PASSKEY_PASSWORD +auth_admin_passkey_password_sha512_encrypted = True +auth_admin_passkey_send_to_user = True +auth_admin_passkey_sysadmin_email = SYSADMIN_EMAIL +auth_admin_passkey_sysadmin_lang = SYSADMIN_LANG +``` diff --git a/auth_admin_passkey/readme/CONTRIBUTORS.md b/auth_admin_passkey/readme/CONTRIBUTORS.md new file mode 100644 index 000000000..ed2af39de --- /dev/null +++ b/auth_admin_passkey/readme/CONTRIBUTORS.md @@ -0,0 +1,5 @@ +- Eugen Don \<\> +- Alexandre Papin () +- Sylvain LE GAL () +- Dhara Solanki \<\> () +- Zina Rasoamanana \<\> diff --git a/auth_admin_passkey/readme/DESCRIPTION.md b/auth_admin_passkey/readme/DESCRIPTION.md new file mode 100644 index 000000000..390b1b912 --- /dev/null +++ b/auth_admin_passkey/readme/DESCRIPTION.md @@ -0,0 +1,9 @@ +This module extends the functionality of users module to support loging +in with an extra system administrator password in other user accounts. + +- System Administrator has now the possibility to login in with any + login +- According to the configuration, Odoo will send a mail to user and + admin to indicate them +- According to the configuration, password can be stored encrypted in + configuration file diff --git a/auth_admin_passkey/static/description/icon.png b/auth_admin_passkey/static/description/icon.png new file mode 100644 index 000000000..490879d9f Binary files /dev/null and b/auth_admin_passkey/static/description/icon.png differ diff --git a/auth_admin_passkey/static/description/index.html b/auth_admin_passkey/static/description/index.html new file mode 100644 index 000000000..7d698145c --- /dev/null +++ b/auth_admin_passkey/static/description/index.html @@ -0,0 +1,466 @@ + + + + + + +Authentification - System Administrator Passkey + + + +
+

Authentification - System Administrator Passkey

+ + +

Beta License: AGPL-3 OCA/server-auth Translate me on Weblate Try me on Runboat

+

This module extends the functionality of users module to support loging +in with an extra system administrator password in other user accounts.

+
    +
  • System Administrator has now the possibility to login in with any +login
  • +
  • According to the configuration, Odoo will send a mail to user and +admin to indicate them
  • +
  • According to the configuration, password can be stored encrypted in +configuration file
  • +
+

Table of contents

+ +
+

Configuration

+

To enable this feature, once the module installed, you have to add the +following keys in your odoo.cfg configuration file.

+
    +
  • auth_admin_passkey_password. The password that allows user to +logging in with any login. If not set, the feature is disabled.
  • +
  • auth_admin_passkey_password_sha512_encrypted (default False), if +enabled, auth_admin_passkey_password should be the password encrypted +with sha512. On linux, this can be done using this command: +echo -n YOUR_PASSWORD_AUTH_ADMIN_PASSKEY | sha512sum
  • +
  • auth_admin_passkey_send_to_user (default True), if enabled, an +email will be send to the user, if his account has been used by the +System Administrator.
  • +
  • auth_admin_passkey_sysadmin_email. If set, an email will be sent +to this mail.
  • +
  • auth_admin_passkey_sysadmin_lang. the language (exemple en_US), +used for the mail sent to the System Administrator. If not set, the +language of the SUPERUSER_ID user will be used.
  • +
+

typical Dev / Test configuration section

+

No keys to add.

+

typical Production configuration section

+
+auth_admin_passkey_password = PASSKEY_PASSWORD
+auth_admin_passkey_password_sha512_encrypted = True
+auth_admin_passkey_send_to_user = True
+auth_admin_passkey_sysadmin_email = SYSADMIN_EMAIL
+auth_admin_passkey_sysadmin_lang = SYSADMIN_LANG
+
+
+
+

Bug Tracker

+

Bugs are tracked on GitHub 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.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • GRAP
  • +
+
+ +
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

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 project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + diff --git a/auth_admin_passkey/tests/__init__.py b/auth_admin_passkey/tests/__init__.py new file mode 100644 index 000000000..6a2da4dbe --- /dev/null +++ b/auth_admin_passkey/tests/__init__.py @@ -0,0 +1,2 @@ +from . import test_auth_admin_passkey +from . import test_ui diff --git a/auth_admin_passkey/tests/test_auth_admin_passkey.py b/auth_admin_passkey/tests/test_auth_admin_passkey.py new file mode 100644 index 000000000..92704a25e --- /dev/null +++ b/auth_admin_passkey/tests/test_auth_admin_passkey.py @@ -0,0 +1,77 @@ +# Copyright (C) 2013-Today GRAP (http://www.grap.coop) +# @author Sylvain LE GAL (https://twitter.com/legalsylvain) +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + +from odoo import exceptions +from odoo.tests import common, tagged +from odoo.tools import config + + +@tagged("post_install", "-at_install") +class TestAuthAdminPasskey(common.TransactionCase): + """Tests for 'Auth Admin Passkey' Module""" + + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.env = cls.env(context=dict(cls.env.context, tracking_disable=True)) + + cls.ResUsers = cls.env["res.users"] + + cls.db = cls.env.cr.dbname + + cls.user_login = "auth_admin_passkey_user" + cls.user_password = "Auth_admin_passkey_password*1" + cls.sysadmin_passkey = "SysAdminPasskeyPa$$w0rd" + # sysadmin_passkey encrypted with command: + # echo -n 'SysAdminPasskeyPa$$w0rd' | sha512sum + cls.sysadmin_passkey_encrypted = ( + "364e3543996125e3408" + "4b8eca00e328d4acdff9d24126c53624101812f8ed411fd38ecc9" + "b64807adbf56b02d0315e209a61a193a85003488ca27af573801e65e" + ) + cls.bad_password = "Bad_password*000001" + cls.bad_login = "bad_login" + + user = cls.ResUsers.create( + { + "login": cls.user_login, + "password": cls.user_password, + "name": "auth_admin_passkey User", + } + ) + cls.user = user.with_user(user) + + def test_01_normal_login_succeed(self): + self.user._check_credentials(self.user_password, {"interactive": True}) + + def test_02_normal_login_fail(self): + with self.assertRaises(exceptions.AccessDenied): + self.user._check_credentials(self.bad_password, {"interactive": True}) + + def test_03_normal_login_passkey_fail(self): + # This should failed, because feature is disabled + config["auth_admin_passkey_password"] = False + config["auth_admin_passkey_password_sha512_encrypted"] = False + with self.assertRaises(exceptions.AccessDenied): + self.user._check_credentials(self.sysadmin_passkey, {"interactive": True}) + + def test_04_normal_login_passkey_succeed(self): + # This should succeed, because feature is enabled + config["auth_admin_passkey_password"] = self.sysadmin_passkey + config["auth_admin_passkey_password_sha512_encrypted"] = False + self.user._check_credentials(self.sysadmin_passkey, {"interactive": True}) + + def test_05_passkey_login_passkey_succeed(self): + """[Bug #1319391] + Test the correct behaviour of login with 'bad_login' / 'admin'""" + with self.assertRaises(exceptions.AccessDenied): + self.ResUsers.authenticate( + self.db, self.bad_login, self.sysadmin_passkey, {} + ) + + def test_06_normal_login_passkey_succeed_encrypted_password(self): + # This should succeed, because feature is enabled + config["auth_admin_passkey_password"] = self.sysadmin_passkey_encrypted + config["auth_admin_passkey_password_sha512_encrypted"] = True + self.user._check_credentials(self.sysadmin_passkey, {"interactive": True}) diff --git a/auth_admin_passkey/tests/test_ui.py b/auth_admin_passkey/tests/test_ui.py new file mode 100644 index 000000000..e2619d05f --- /dev/null +++ b/auth_admin_passkey/tests/test_ui.py @@ -0,0 +1,174 @@ +# Copyright (C) 2013-Today GRAP (http://www.grap.coop) +# @author Sylvain LE GAL (https://twitter.com/legalsylvain) +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + +from lxml import html +from werkzeug.test import Client +from werkzeug.wrappers import Response + +from odoo import http +from odoo.tests import common, tagged +from odoo.tools import config + + +@tagged("post_install", "-at_install") +class TestUI(common.HttpCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.env = cls.env(context=dict(cls.env.context, tracking_disable=True)) + cls.werkzeug_environ = {"REMOTE_ADDR": "127.0.0.1"} + cls.test_client = Client(http.root, Response) + cls.test_client.get("/web/session/logout") + + def setUp(self): + super().setUp() + with self.registry.cursor() as test_cursor: + env = self.env(test_cursor) + + self.user_login = "auth_admin_passkey_user" + self.user_password = "Auth_admin_passkey_password*1" + self.sysadmin_passkey = "SysAdminPasskeyPa$$w0rd" + # sysadmin_passkey encrypted with command: + # echo -n 'SysAdminPasskeyPa$$w0rd' | sha512sum + self.sysadmin_passkey_encrypted = ( + "364e3543996125e3408" + "4b8eca00e328d4acdff9d24126c53624101812f8ed411fd38ecc9" + "b64807adbf56b02d0315e209a61a193a85003488ca27af573801e65e" + ) + self.bad_password = "Bad_password*000001" + self.bad_login = "bad_login" + + self.user = env["res.users"].create( + { + "login": self.user_login, + "password": self.user_password, + "name": "auth_admin_passkey User", + } + ) + + self.dbname = env.cr.dbname + + def html_doc(self, response): + """Get an HTML LXML document.""" + return html.fromstring(response.data) + + def csrf_token(self, response): + """Get a valid CSRF token.""" + doc = self.html_doc(response) + return doc.xpath("//input[@name='csrf_token']")[0].get("value") + + def get_request(self, url, data=None): + return self.test_client.get(url, query_string=data, follow_redirects=True) + + def post_request(self, url, data=None): + return self.test_client.post( + url, data=data, follow_redirects=True, environ_base=self.werkzeug_environ + ) + + def test_01_normal_login_succeed(self): + # Our user wants to go to backoffice part of Odoo + response = self.get_request("/web/", data={"db": self.dbname}) + + # He notices that his redirected to login page as not authenticated + self.assertIn("oe_login_form", response.data.decode("utf8")) + + # He needs to enters his credentials and submit the form + data = { + "login": self.user_login, + "password": self.user_password, + "csrf_token": self.csrf_token(response), + "db": self.dbname, + } + response = self.post_request("/web/login/", data=data) + + # He notices that his redirected to backoffice + self.assertNotIn("oe_login_form", response.data.decode("utf8")) + + def test_02_normal_login_fail(self): + # Our user wants to go to backoffice part of Odoo + response = self.get_request("/web/", data={"db": self.dbname}) + + # He notices that he's redirected to login page as not authenticated + self.assertIn("oe_login_form", response.data.decode("utf8")) + + # He needs to enter his credentials and submit the form + data = { + "login": self.user_login, + "password": self.bad_password, + "csrf_token": self.csrf_token(response), + "db": self.dbname, + } + response = self.post_request("/web/login/", data=data) + + # He mistyped his password so he's redirected to login page again + self.assertIn("Wrong login/password", response.data.decode("utf8")) + + def test_03_passkey_login_succeed(self): + # We enable auth_admin_passkey feature + config["auth_admin_passkey_password"] = self.sysadmin_passkey + config["auth_admin_passkey_password_sha512_encrypted"] = False + + # Our passkey user wants to go to backoffice part of Odoo + response = self.get_request("/web/", data={"db": self.dbname}) + + # He notices that he's redirected to login page as not authenticated + self.assertIn("oe_login_form", response.data.decode("utf8")) + + # He needs to enter his credentials and submit the form + data = { + "login": self.user_login, + "password": self.sysadmin_passkey, + "csrf_token": self.csrf_token(response), + "db": self.dbname, + } + response = self.post_request("/web/login/", data=data) + + # He notices that his redirected to backoffice + self.assertNotIn("oe_login_form", response.data.decode("utf8")) + + def test_04_passkey_login_fail(self): + # We disable auth_admin_passkey feature + config["auth_admin_passkey_password"] = False + config["auth_admin_passkey_password_sha512_encrypted"] = False + + # Our passkey user wants to go to backoffice part of Odoo + response = self.get_request("/web/", data={"db": self.dbname}) + + # He notices that he's redirected to login page as not authenticated + self.assertIn("oe_login_form", response.data.decode("utf8")) + + # He needs to enter his credentials and submit the form + data = { + "login": self.user_login, + "password": self.sysadmin_passkey, + "csrf_token": self.csrf_token(response), + "db": self.dbname, + } + response = self.post_request("/web/login/", data=data) + + # Passkey feature is disabled so he's redirected to login page again + self.assertIn("Wrong login/password", response.data.decode("utf8")) + + def test_05_passkey_login_encrypted_succeed(self): + # We enable auth_admin_passkey feature with encryption + config["auth_admin_passkey_password"] = self.sysadmin_passkey_encrypted + config["auth_admin_passkey_password_sha512_encrypted"] = True + + # Our passkey user wants to go to backoffice part of Odoo + response = self.get_request("/web/", data={"db": self.dbname}) + + # He notices that he's redirected to login page as not authenticated + self.assertIn("oe_login_form", response.data.decode("utf8")) + + # He needs to enter his credentials and submit the form + data = { + "login": self.user_login, + "password": self.sysadmin_passkey, + "csrf_token": self.csrf_token(response), + "db": self.dbname, + } + response = self.post_request("/web/login/", data=data) + + # He notices that his redirected to backoffice + self.assertNotIn("oe_login_form", response.data.decode("utf8"))