From 8d090fe19fd3c95f8a75a519518a5a1f9de3bbc6 Mon Sep 17 00:00:00 2001 From: mario Date: Fri, 9 May 2025 16:40:02 +0700 Subject: [PATCH] edit: patch XHR Request dengan coverage lebih luas dari monkeyPatchXML --- extensions/cornerstone/src/initWADOImageLoader.js | 9 +++++++++ .../default/src/DicomWebDataSource/index.js | 8 ++++++++ platform/app/src/App.tsx | 15 ++++++++------- 3 files changed, 25 insertions(+), 7 deletions(-) diff --git a/extensions/cornerstone/src/initWADOImageLoader.js b/extensions/cornerstone/src/initWADOImageLoader.js index 9f9922f..8b12a77 100644 --- a/extensions/cornerstone/src/initWADOImageLoader.js +++ b/extensions/cornerstone/src/initWADOImageLoader.js @@ -39,6 +39,15 @@ export default function initWADOImageLoader( Accept: acceptHeader, }; + // // Patch Mario: + const authToken = sessionStorage.getItem('ohif-auth-token'); + if (!authToken) { + window.location.href = '/login'; + return; + } + + xhrRequestHeaders.Authorization = `Bearer ${authToken}`; + if (headers) { Object.assign(xhrRequestHeaders, headers); } diff --git a/extensions/default/src/DicomWebDataSource/index.js b/extensions/default/src/DicomWebDataSource/index.js index 8f5f9ae..de3d528 100644 --- a/extensions/default/src/DicomWebDataSource/index.js +++ b/extensions/default/src/DicomWebDataSource/index.js @@ -85,6 +85,14 @@ function createDicomWebApi(dicomWebConfig, servicesManager) { if (authHeaders && authHeaders.Authorization) { xhrRequestHeaders.Authorization = authHeaders.Authorization; } + + const authToken = sessionStorage.getItem('ohif-auth-token'); + if (!authToken) { + window.location.href = '/login'; + return; + } + xhrRequestHeaders.Authorization = `Bearer ${authToken}`; + return xhrRequestHeaders; }; diff --git a/platform/app/src/App.tsx b/platform/app/src/App.tsx index e796f1d..980863d 100644 --- a/platform/app/src/App.tsx +++ b/platform/app/src/App.tsx @@ -38,7 +38,7 @@ import OpenIdConnectRoutes from './utils/OpenIdConnectRoutes'; import { ShepherdJourneyProvider } from 'react-shepherd'; function injectAuth() { - console.log("---> Inject Auth"); + console.log('---> Inject Auth'); const originalXHROpen = XMLHttpRequest.prototype.open; const originalXHRSend = XMLHttpRequest.prototype.send; @@ -54,21 +54,22 @@ function injectAuth() { XMLHttpRequest.prototype.send = function (body) { this.setRequestHeader('Authorization', `Bearer ${authToken}`); this.addEventListener('readystatechange', function () { - if (this.readyState === 4) { // DONE + if (this.readyState === 4) { + // DONE try { //check responseType ie json, and then check the auth response status //redirect to custom login page if needed - console.log("response type :", this.responseType); - console.log("response :", this.response); - console.log("responseText :", this.responseText); - } catch (e) { } + console.log('response type :', this.responseType); + console.log('response :', this.response); + console.log('responseText :', this.responseText); + } catch (e) {} } }); return originalXHRSend.apply(this, arguments); }; } -injectAuth(); +// injectAuth(); let commandsManager: CommandsManager, extensionManager: ExtensionManager, servicesManager: AppTypes.ServicesManager,