]> git.immae.eu Git - github/shaarli/Shaarli.git/commitdiff
Export: refresh CRSF token after submit 1535/head
authorArthurHoaro <arthur@hoa.ro>
Tue, 1 Sep 2020 09:01:21 +0000 (11:01 +0200)
committerArthurHoaro <arthur@hoa.ro>
Tue, 1 Sep 2020 09:01:21 +0000 (11:01 +0200)
This allow users to submit the form multiple times, because there is no actual browser redirection to the page.

Fixes #1532

assets/default/js/base.js

index 0f29799d148d8f864ff009ef2f7034aa5bbf07c3..2793882349ad9fd1503eef0bf5baf5681f9f2b0f 100644 (file)
@@ -25,16 +25,18 @@ function findParent(element, tagName, attributes) {
 /**
  * Ajax request to refresh the CSRF token.
  */
-function refreshToken(basePath) {
-  console.log('refresh');
+function refreshToken(basePath, callback) {
   const xhr = new XMLHttpRequest();
   xhr.open('GET', `${basePath}/admin/token`);
   xhr.onload = () => {
     const elements = document.querySelectorAll('input[name="token"]');
     [...elements].forEach((element) => {
-      console.log(element);
       element.setAttribute('value', xhr.responseText);
     });
+
+    if (callback) {
+      callback(xhr.response);
+    }
   };
   xhr.send();
 }
@@ -622,4 +624,15 @@ function init(description) {
   [...autocompleteFields].forEach((autocompleteField) => {
     awesomepletes.push(createAwesompleteInstance(autocompleteField));
   });
+
+  const exportForm = document.querySelector('#exportform');
+  if (exportForm != null) {
+    exportForm.addEventListener('submit', (event) => {
+      event.preventDefault();
+
+      refreshToken(basePath, () => {
+        event.target.submit();
+      });
+    });
+  }
 })();