From 8b21abcdfe30e9d1793cf299f5740dcf3c1ffb1f Mon Sep 17 00:00:00 2001 From: Hugo Trentesaux <hugo@le-filament.com> Date: Tue, 22 Apr 2025 13:08:39 +0200 Subject: [PATCH] fix reset password login is email context for web login --- __init__.py | 1 + controllers/main.py | 9 +++++++++ models/__init__.py | 1 + models/res_partner.py | 20 ++++++++++++++++++++ 4 files changed, 31 insertions(+) create mode 100644 models/__init__.py create mode 100644 models/res_partner.py diff --git a/__init__.py b/__init__.py index e046e49..91c5580 100644 --- a/__init__.py +++ b/__init__.py @@ -1 +1,2 @@ from . import controllers +from . import models diff --git a/controllers/main.py b/controllers/main.py index 2c0a615..ef1cc7b 100644 --- a/controllers/main.py +++ b/controllers/main.py @@ -1,3 +1,6 @@ +# Copyright 2024- Le Filament (https://le-filament.com) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html) + from odoo import _, http, tools from odoo.addons.auth_signup.controllers.main import AuthSignupHome @@ -36,3 +39,9 @@ class SolagroAuthSignupHome(AuthSignupHome): # update request params because super() uses this instead of kwargs http.request.params.update(post) return super().web_auth_signup(**post) + + def do_signup(self, qcontext): + # inject qcontext email in request params login + # because it is used in web login controller + http.request.params['login'] = qcontext['email'] + return super().do_signup(qcontext) diff --git a/models/__init__.py b/models/__init__.py new file mode 100644 index 0000000..91fed54 --- /dev/null +++ b/models/__init__.py @@ -0,0 +1 @@ +from . import res_partner diff --git a/models/res_partner.py b/models/res_partner.py new file mode 100644 index 0000000..6450f8c --- /dev/null +++ b/models/res_partner.py @@ -0,0 +1,20 @@ +# Copyright 2024- Le Filament (https://le-filament.com) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html) + +from odoo import models, api + +class ResPartner(models.Model): + _inherit = 'res.partner' + + @api.model + def signup_retrieve_info(self, token): + """ """ + partner = self._signup_retrieve_partner(token, raise_exception=True) + res = super().signup_retrieve_info(token) + if partner.user_ids: + # only for display in reset password page + res['firstname'] = partner.user_ids[0].firstname + res['lastname'] = partner.user_ids[0].lastname + # because email is used as user login + res['email'] = res['login'] + return res -- GitLab