Parcourir la source

Revert "#101700 change csrf token access"

This reverts commit c12e545ccd6f16e4ef557b86311102b13a0d3fa6.
Arthur il y a 3 ans
Parent
commit
3ad08c75c0

Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
netbox/project-static/dist/config.js


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
netbox/project-static/dist/config.js.map


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
netbox/project-static/dist/lldp.js


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
netbox/project-static/dist/lldp.js.map


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
netbox/project-static/dist/netbox.js


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
netbox/project-static/dist/netbox.js.map


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
netbox/project-static/dist/status.js


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
netbox/project-static/dist/status.js.map


+ 1 - 0
netbox/project-static/package.json

@@ -27,6 +27,7 @@
     "bootstrap": "~5.0.2",
     "bootstrap": "~5.0.2",
     "clipboard": "^2.0.8",
     "clipboard": "^2.0.8",
     "color2k": "^1.2.4",
     "color2k": "^1.2.4",
+    "cookie": "^0.4.1",
     "dayjs": "^1.10.4",
     "dayjs": "^1.10.4",
     "flatpickr": "4.6.3",
     "flatpickr": "4.6.3",
     "htmx.org": "^1.6.1",
     "htmx.org": "^1.6.1",

+ 14 - 5
netbox/project-static/src/util.ts

@@ -1,11 +1,9 @@
+import Cookie from 'cookie';
+
 type Method = 'GET' | 'POST' | 'PATCH' | 'PUT' | 'DELETE';
 type Method = 'GET' | 'POST' | 'PATCH' | 'PUT' | 'DELETE';
 type ReqData = URLSearchParams | Dict | undefined | unknown;
 type ReqData = URLSearchParams | Dict | undefined | unknown;
 type SelectedOption = { name: string; options: string[] };
 type SelectedOption = { name: string; options: string[] };
 
 
-declare global {
-    interface Window { CSRF_TOKEN: any; }
-}
-
 /**
 /**
  * Infer valid HTMLElement props based on element name.
  * Infer valid HTMLElement props based on element name.
  */
  */
@@ -95,12 +93,23 @@ export function isElement(obj: Element | null | undefined): obj is Element {
   return typeof obj !== null && typeof obj !== 'undefined';
   return typeof obj !== null && typeof obj !== 'undefined';
 }
 }
 
 
+/**
+ * Retrieve the CSRF token from cookie storage.
+ */
+function getCsrfToken(): string {
+  const { csrftoken: csrfToken } = Cookie.parse(document.cookie);
+  if (typeof csrfToken === 'undefined') {
+    throw new Error('Invalid or missing CSRF token');
+  }
+  return csrfToken;
+}
+
 export async function apiRequest<R extends Dict, D extends ReqData = undefined>(
 export async function apiRequest<R extends Dict, D extends ReqData = undefined>(
   url: string,
   url: string,
   method: Method,
   method: Method,
   data?: D,
   data?: D,
 ): Promise<APIResponse<R>> {
 ): Promise<APIResponse<R>> {
-  const token = window.CSRF_TOKEN;
+  const token = getCsrfToken();
   const headers = new Headers({ 'X-CSRFToken': token });
   const headers = new Headers({ 'X-CSRFToken': token });
 
 
   let body;
   let body;

+ 5 - 0
netbox/project-static/yarn.lock

@@ -737,6 +737,11 @@ configstore@^3.0.0:
     write-file-atomic "^2.0.0"
     write-file-atomic "^2.0.0"
     xdg-basedir "^3.0.0"
     xdg-basedir "^3.0.0"
 
 
+cookie@^0.4.1:
+  version "0.4.1"
+  resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.1.tgz#afd713fe26ebd21ba95ceb61f9a8116e50a537d1"
+  integrity sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==
+
 copy-to-clipboard@^3.2.0:
 copy-to-clipboard@^3.2.0:
   version "3.3.1"
   version "3.3.1"
   resolved "https://registry.yarnpkg.com/copy-to-clipboard/-/copy-to-clipboard-3.3.1.tgz#115aa1a9998ffab6196f93076ad6da3b913662ae"
   resolved "https://registry.yarnpkg.com/copy-to-clipboard/-/copy-to-clipboard-3.3.1.tgz#115aa1a9998ffab6196f93076ad6da3b913662ae"

+ 0 - 1
netbox/templates/base/base.html

@@ -99,7 +99,6 @@
           }
           }
           return setMode("light", true);
           return setMode("light", true);
       })();
       })();
-      window.CSRF_TOKEN = "{{ csrf_token }}";
     </script>
     </script>
 
 
     {# Static resources #}
     {# Static resources #}

Certains fichiers n'ont pas été affichés car il y a eu trop de fichiers modifiés dans ce diff