This repository has been archived on 2023-03-18. You can view files and clone it, but cannot push or open issues or pull requests.
osr-discourse-src/app/assets/javascripts/discourse/app/initializers/csrf-token.js

32 lines
716 B
JavaScript

// Append our CSRF token to AJAX requests when necessary.
let installed = false;
let callbacks = $.Callbacks();
export default {
name: "csrf-token",
initialize(container) {
// Add a CSRF token to all AJAX requests
let session = container.lookup("session:main");
session.set(
"csrfToken",
document.head.querySelector("meta[name=csrf-token]")?.content
);
if (!installed) {
$.ajaxPrefilter(callbacks.fire);
installed = true;
}
callbacks.add(function (options, originalOptions, xhr) {
if (!options.crossDomain) {
xhr.setRequestHeader("X-CSRF-Token", session.get("csrfToken"));
}
});
},
teardown() {
callbacks.empty();
},
};