diff --git a/secure_uninstall/README.rst b/secure_uninstall/README.rst index d2ed337e5..f14968c92 100644 --- a/secure_uninstall/README.rst +++ b/secure_uninstall/README.rst @@ -32,7 +32,7 @@ Usage #. Go to Settings > Local modules. #. Click on one module. #. Click on Uninstall button. -#. You will need to enter 'secure_uninstall' value provided by your administrator before proceeding. +#. You will need to enter a specific password before proceeding (password provided by administrator). .. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas diff --git a/secure_uninstall/i18n/fr.po b/secure_uninstall/i18n/fr.po index 5cfea94d1..fe7c98e2f 100644 --- a/secure_uninstall/i18n/fr.po +++ b/secure_uninstall/i18n/fr.po @@ -45,4 +45,4 @@ msgstr "Mot de passe" #. module: secure_uninstall #: view:base.module.upgrade:secure_uninstall.view_base_module_upgrade msgid "Secure Uninstall" -msgstr "Désintallation Securisé" +msgstr "Désintallation Securisée" diff --git a/secure_uninstall/models/module.py b/secure_uninstall/models/module.py index 41e39ca60..7e871d695 100644 --- a/secure_uninstall/models/module.py +++ b/secure_uninstall/models/module.py @@ -7,33 +7,38 @@ from openerp.exceptions import Warning as UserError from openerp.tools.config import config +def _get_authorized_password(self): + """ You can define your own authorized keys + """ + return [config.get("secure_uninstall")] + + class BaseModuleUpgrade(models.TransientModel): _inherit = 'base.module.upgrade' - password = fields.Char( + uninstall_password = fields.Char( string='Password', help="'secure_uninstall' value from Odoo configuration file ") @api.multi def upgrade_module(self): - config_passwd = config.get("secure_uninstall") for elm in self: - if not config_passwd: + if not config.get("secure_uninstall"): raise UserError( "Missing configuration key\n--------------------\n" "'secure_uninstall' configuration key " "is not set in \n" "your Odoo server configuration file: " "please set it a value") - if elm.password != config_passwd: + if elm.uninstall_password not in _get_authorized_password(): raise UserError( "Password Error\n--------------------\n" "Provided password '%s' doesn't match with " - "'Master Password'\n('secure_uninstall' key) found in the " - "Odoo server configuration file ." + "'Master Password'\n('secure_uninstall' key) found in " + "the Odoo server configuration file ." "\n\nResolution\n-------------\n" "Please check your password and retry or cancel" - % elm.password) + % elm.uninstall_password) # keep this password in db is insecure, then we remove it - elm.password = False + elm.uninstall_password = False return super(BaseModuleUpgrade, self).upgrade_module() diff --git a/secure_uninstall/views/module_view.xml b/secure_uninstall/views/module_view.xml index c5471aaca..9bcc4cf58 100644 --- a/secure_uninstall/views/module_view.xml +++ b/secure_uninstall/views/module_view.xml @@ -13,7 +13,7 @@