Monkey Patch XMLHttpRequest -- inject bearer token and verify response

This commit is contained in:
2025-04-29 09:42:53 +07:00
parent cb380a521d
commit 86ad0b38dd
2 changed files with 37 additions and 1 deletions

View File

@@ -1,6 +1,10 @@
/** @type {AppTypes.Config} */ /** @type {AppTypes.Config} */
function sas_get_token() {
//implement token here
return "kris-check-token-is-here";
}
window.config = { window.config = {
sasGetToken: sas_get_token,
routerBasename: '/', routerBasename: '/',
// whiteLabeling: {}, // whiteLabeling: {},
extensions: [], extensions: [],

View File

@@ -37,6 +37,38 @@ import appInit from './appInit.js';
import OpenIdConnectRoutes from './utils/OpenIdConnectRoutes'; import OpenIdConnectRoutes from './utils/OpenIdConnectRoutes';
import { ShepherdJourneyProvider } from 'react-shepherd'; import { ShepherdJourneyProvider } from 'react-shepherd';
function injectAuth() {
console.log("---> Inject Auth");
const originalXHROpen = XMLHttpRequest.prototype.open;
const originalXHRSend = XMLHttpRequest.prototype.send;
//take from local storage for the token
// let authToken = '--kris-auth-token-check--';
let authToken = window.config.sasGetToken();
XMLHttpRequest.prototype.open = function (method, url, async, user, password) {
this._url = url; // Save URL if you want conditional logic
return originalXHROpen.apply(this, arguments);
};
XMLHttpRequest.prototype.send = function (body) {
this.setRequestHeader('Authorization', `Bearer ${authToken}`);
this.addEventListener('readystatechange', function () {
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) { }
}
});
return originalXHRSend.apply(this, arguments);
};
}
injectAuth();
let commandsManager: CommandsManager, let commandsManager: CommandsManager,
extensionManager: ExtensionManager, extensionManager: ExtensionManager,
servicesManager: AppTypes.ServicesManager, servicesManager: AppTypes.ServicesManager,