diff options
| author | Benoit Socias <bso@odoo.com> | 2021-01-06 10:12:07 +0000 |
|---|---|---|
| committer | qsm-odoo <qsm@odoo.com> | 2021-01-06 14:17:21 +0000 |
| commit | 3fd40ba2030fef7dccf4046a932e3b3a172dc53f (patch) | |
| tree | 4c1f8ce147358ee165a1b5bf163838353288b0c1 /addons/web_editor/controllers/main.py | |
| parent | 0de069b8ca9fb005ba5b076984f5677de25889ee (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/main.py')
| -rw-r--r-- | addons/web_editor/controllers/main.py | 12 |
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): |
