diff options
| author | fja-odoo <fja@odoo.com> | 2020-04-24 10:50:28 +0000 |
|---|---|---|
| committer | fja-odoo <fja@odoo.com> | 2020-06-05 10:58:50 +0000 |
| commit | 541148613451f4c14a299672d91c4397d8a9f6de (patch) | |
| tree | c798cd359c3960d4ae86ebc9847666a3a30bf4a6 /addons/website_form/controllers | |
| parent | fea1706f275e88a0d28dd2776c6aa0dd62c1bf3d (diff) | |
[IMP] google_recaptcha, *: integrate recaptchaV3
* = base_setup, website_form, website_sale, website_crm,
crm_iap_lead_website, website_hr_recruitment, website_mass_mailing
Integrate reCaptchaV3 on website_form submit and website_mass_mailing
subscription.
You can now use ReCaptchaV3 to add reCaptcha verification in any module
using google_recaptcha.
Also added a better error management on the form with custom messages.
task-2217980
closes odoo/odoo#48466
Related: odoo/enterprise#9649
Signed-off-by: Jérémy Kersten (jke) <jke@openerp.com>
Diffstat (limited to 'addons/website_form/controllers')
| -rw-r--r-- | addons/website_form/controllers/main.py | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/addons/website_form/controllers/main.py b/addons/website_form/controllers/main.py index 218c8189306..0a1cb0f24e8 100644 --- a/addons/website_form/controllers/main.py +++ b/addons/website_form/controllers/main.py @@ -8,11 +8,11 @@ import pytz from datetime import datetime from psycopg2 import IntegrityError -from odoo import http, SUPERUSER_ID +from odoo import http, SUPERUSER_ID, _ from odoo.http import request from odoo.tools import DEFAULT_SERVER_DATE_FORMAT, DEFAULT_SERVER_DATETIME_FORMAT from odoo.tools.translate import _ -from odoo.exceptions import ValidationError +from odoo.exceptions import ValidationError, UserError from odoo.addons.base.models.ir_qweb_fields import nl2br @@ -21,9 +21,22 @@ class WebsiteForm(http.Controller): # Check and insert values from the form on the model <model> @http.route('/website_form/<string:model_name>', type='http', auth="public", methods=['POST'], website=True) def website_form(self, model_name, **kwargs): + try: + if request.env['ir.http']._verify_request_recaptcha_token('website_form'): + return self._handle_website_form(model_name, **kwargs) + error = _("Suspicious activity detected by Google reCaptcha.") + except (ValidationError, UserError) as e: + error = e.args[0] + return json.dumps({ + 'error': error, + }) + + def _handle_website_form(self, model_name, **kwargs): model_record = request.env['ir.model'].sudo().search([('model', '=', model_name), ('website_form_access', '=', True)]) if not model_record: - return json.dumps(False) + return json.dumps({ + 'error': _("The form's specified model does not exist") + }) try: data = self.extract_data(model_record, request.params) |
