diff options
| author | Xavier Morel <xmo@odoo.com> | 2015-09-23 15:55:24 +0200 |
|---|---|---|
| committer | Olivier Dony <odo@openerp.com> | 2015-10-01 01:36:50 +0200 |
| commit | cea29e0c0176657f094ab80b460be503affe8a1b (patch) | |
| tree | 445bbe02c60a5f5a3d6638b38888591fe452a08c /addons/website/static/src/js/website.js | |
| parent | 7753ed7ce4b8e6eb06dc42e284af39fbd9ccefd5 (diff) | |
[ADD] client-side CSRF support
* add CSRF token as core.csrf_token
* add CSRF tokens to client-generated and/or JS-submitted forms
* remove broken "compatibility" mode of web.ajax.post
/cc @dmo-odoo I've no idea how that was supposed to work, from looking
things up all modern browsers seem to support FormData, and old IEs
which don't don't support fallbacks either and would require
submitting an actual form as fallback so...
Diffstat (limited to 'addons/website/static/src/js/website.js')
| -rw-r--r-- | addons/website/static/src/js/website.js | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/addons/website/static/src/js/website.js b/addons/website/static/src/js/website.js index ded64d27704..821223967c1 100644 --- a/addons/website/static/src/js/website.js +++ b/addons/website/static/src/js/website.js @@ -142,16 +142,23 @@ var error = function(data, url) { $error.modal('show'); }; +function _add_input(form, name, value) { + var param = document.createElement('input'); + param.setAttribute('type', 'hidden'); + param.setAttribute('name', name); + param.setAttribute('value', value); + form.appendChild(param); +} var form = function (url, method, params) { var form = document.createElement('form'); form.setAttribute('action', url); form.setAttribute('method', method); + + if (core.csrf_token) { + _add_input(form, 'csrf_token', core.csrf_token); + } _.each(params, function (v, k) { - var param = document.createElement('input'); - param.setAttribute('type', 'hidden'); - param.setAttribute('name', k); - param.setAttribute('value', v); - form.appendChild(param); + _add_input(form, k, v); }); document.body.appendChild(form); form.submit(); |
