summaryrefslogtreecommitdiff
path: root/addons/web_editor/controllers
diff options
context:
space:
mode:
authorBenoit Socias <bso@odoo.com>2021-01-06 10:12:07 +0000
committerqsm-odoo <qsm@odoo.com>2021-01-06 14:17:21 +0000
commit3fd40ba2030fef7dccf4046a932e3b3a172dc53f (patch)
tree4c1f8ce147358ee165a1b5bf163838353288b0c1 /addons/web_editor/controllers
parent0de069b8ca9fb005ba5b076984f5677de25889ee (diff)
[FIX] web_editor, *: review `public_render_template`
*: website, base The normal flow to render a template is now to use `render_public_asset` which bypasses the read access rights if the user matches the groups the view declares. For public users, we still cannot use that as they do not have access to calling model methods at all. The route `public_render_template` is thus still needed, but it should use the `render_public_asset` util. In master, it will only rely on it but as a stable fix, we still need to use the whitelist as we cannot change the related views' group. This commit also adds deprecated comments to the read_template method which has been removed in master. Related to task-2412544 closes odoo/odoo#64137 Signed-off-by: Quentin Smetz (qsm) <qsm@odoo.com>
Diffstat (limited to 'addons/web_editor/controllers')
-rw-r--r--addons/web_editor/controllers/main.py12
1 files changed, 8 insertions, 4 deletions
diff --git a/addons/web_editor/controllers/main.py b/addons/web_editor/controllers/main.py
index e85a678f54e..b8f3b3eb36f 100644
--- a/addons/web_editor/controllers/main.py
+++ b/addons/web_editor/controllers/main.py
@@ -471,10 +471,14 @@ class Web_Editor(http.Controller):
values = len_args > 1 and args[1] or {}
View = request.env['ir.ui.view']
- if request.env.user._is_public() \
- and xmlid in request.env['web_editor.assets']._get_public_asset_xmlids():
- View = View.sudo()
- return View._render_template(xmlid, {k: values[k] for k in values if k in trusted_value_keys})
+ if xmlid in request.env['web_editor.assets']._get_public_asset_xmlids():
+ # For white listed assets, bypass access verification
+ # TODO in master this part should be removed and simply use the
+ # public group on the related views instead. And then let the normal
+ # flow handle the rendering.
+ return View.sudo()._render_template(xmlid, {k: values[k] for k in values if k in trusted_value_keys})
+ # Otherwise use normal flow
+ return View.render_public_asset(xmlid, {k: values[k] for k in values if k in trusted_value_keys})
@http.route('/web_editor/modify_image/<model("ir.attachment"):attachment>', type="json", auth="user", website=True)
def modify_image(self, attachment, res_model=None, res_id=None, name=None, data=None, original_id=None):