Skip to content

Commit d6b01e4

Browse files
committed
fallback to cookie-based CSRF token if hidden input field is missing
1 parent 018aa43 commit d6b01e4

File tree

2 files changed

+12
-3
lines changed

2 files changed

+12
-3
lines changed

client/browser/FileSelectDialog.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ const FileSelectDialog = forwardRef((props: any, forwardedRef) => {
214214
}
215215
}
216216

217-
function handleUpload(folderId, uploadedFiles){
217+
function handleUpload(folderId, uploadedFiles) {
218218
if (structure.last_folder !== folderId)
219219
throw new Error('Folder mismatch');
220220
setUploadedFile(uploadedFiles[0]);

client/browser/FinderFileSelect.tsx

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ export default function FinderFileSelect(props) {
1010
const selectRef = useRef(null);
1111
const slotRef = useRef(null);
1212
const dialogRef = useRef(null);
13-
const csrfToken = shadowRoot.host.closest('form')?.querySelector('input[name="csrfmiddlewaretoken"]')?.value;
13+
const csrfToken = getCSRFToken();
1414

1515
useEffect(() => {
1616
// Create a styles element for the shadow DOM
@@ -29,7 +29,7 @@ export default function FinderFileSelect(props) {
2929
};
3030
const preventDefault = (event) => {
3131
event.preventDefault();
32-
}
32+
};
3333
window.addEventListener('keydown', handleEscape);
3434

3535
// prevent browser from loading a drag-and-dropped file
@@ -43,6 +43,15 @@ export default function FinderFileSelect(props) {
4343
}
4444
}, []);
4545

46+
function getCSRFToken() {
47+
const csrfToken = shadowRoot.host.closest('form')?.querySelector('input[name="csrfmiddlewaretoken"]')?.value;
48+
if (csrfToken)
49+
return csrfToken;
50+
const parts = `; ${document.cookie}`.split('; csrftoken=');
51+
if (parts.length === 2)
52+
return parts.pop().split(';').shift();
53+
}
54+
4655
function openDialog() {
4756
dialogRef.current.showModal();
4857
selectRef.current.scrollToCurrentFolder();

0 commit comments

Comments
 (0)