summaryrefslogtreecommitdiff
path: root/addons/website/static/src/js/website.js
diff options
context:
space:
mode:
authorXavier Morel <xmo@odoo.com>2015-09-23 15:55:24 +0200
committerOlivier Dony <odo@openerp.com>2015-10-01 01:36:50 +0200
commitcea29e0c0176657f094ab80b460be503affe8a1b (patch)
tree445bbe02c60a5f5a3d6638b38888591fe452a08c /addons/website/static/src/js/website.js
parent7753ed7ce4b8e6eb06dc42e284af39fbd9ccefd5 (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.js17
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();