From 2050cf91e5bf542702d2012858d0e155d3af8a7b Mon Sep 17 00:00:00 2001 From: Jan Starzak Date: Thu, 7 May 2026 23:21:46 +0200 Subject: [PATCH] feat: allow entering Authorization header --- .../controller/src/components/AppSettings.tsx | 28 +++++++++++++------ packages/controller/src/lib/ografApi.ts | 5 ++++ packages/controller/src/stores/appSettings.ts | 6 ++++ 3 files changed, 31 insertions(+), 8 deletions(-) diff --git a/packages/controller/src/components/AppSettings.tsx b/packages/controller/src/components/AppSettings.tsx index e27ab28..d50d897 100644 --- a/packages/controller/src/components/AppSettings.tsx +++ b/packages/controller/src/components/AppSettings.tsx @@ -10,14 +10,26 @@ export const AppSettings: React.FC = observer(() => { return ( <> :not(style)': { m: 1, width: '25ch' } }} noValidate autoComplete="off"> - { - appSettingsStore.serverApiUrl = event.target.value - }} - /> + + { + appSettingsStore.serverApiUrl = event.target.value + }} + /> + + + { + appSettingsStore.serverAuthorization = event.target.value || null + }} + /> + Status: {serverDataStore.connectedStatus} {serverDataStore.currentOperation} diff --git a/packages/controller/src/lib/ografApi.ts b/packages/controller/src/lib/ografApi.ts index 6da486f..a7d195c 100644 --- a/packages/controller/src/lib/ografApi.ts +++ b/packages/controller/src/lib/ografApi.ts @@ -17,6 +17,7 @@ export class OgrafApi { private BASE_URL_TEMPLATE = 'http://ograf-server/' public baseURL = '' + public authorization: string | undefined = undefined async fetch< Method extends { @@ -43,6 +44,10 @@ export class OgrafApi { const headers: any = options.headers ?? {} headers['Content-Type'] = 'application/json' + if (this.authorization) { + headers['Authorization'] = this.authorization + } + options.headers = headers // let recurring = false; diff --git a/packages/controller/src/stores/appSettings.ts b/packages/controller/src/stores/appSettings.ts index b36c78c..4e144e2 100644 --- a/packages/controller/src/stores/appSettings.ts +++ b/packages/controller/src/stores/appSettings.ts @@ -9,6 +9,7 @@ class AppSettings { private LOCALSTORAGE_ID = 'appSettings' public serverApiUrl = 'http://localhost:8080/ograf/v1/' + public serverAuthorization: string | null = null public selectedRendererId: string = '' private ografApi = OgrafApi.getSingleton() @@ -21,6 +22,7 @@ class AppSettings { if (stateToLoad?.serverApiUrl) this.serverApiUrl = stateToLoad.serverApiUrl if (stateToLoad?.selectedRendererId) this.selectedRendererId = stateToLoad.selectedRendererId + if (stateToLoad?.serverAuthorization) this.serverAuthorization = stateToLoad.serverAuthorization || null if (stateToLoad?.queuedGraphics) { stateToLoad.queuedGraphics.forEach(([key, value]) => this.queuedGraphics.set(key, value)) } @@ -31,12 +33,14 @@ class AppSettings { makeObservable(this, { selectedRendererId: observable, serverApiUrl: observable, + serverAuthorization: observable, }) // Store any changes to localhost: autorun(() => { const storedState: StoredState = { serverApiUrl: this.serverApiUrl, + serverAuthorization: this.serverAuthorization, selectedRendererId: this.selectedRendererId, queuedGraphics: Array.from(this.queuedGraphics.entries()), } @@ -47,6 +51,7 @@ class AppSettings { autorun(() => { // Send serverApiUrl to the ografApi singleton: this.ografApi.baseURL = this.serverApiUrl + this.ografApi.authorization = this.serverAuthorization ?? undefined }) } public getSelectedRendererId(): string | undefined { @@ -84,6 +89,7 @@ class AppSettings { } interface StoredState { serverApiUrl: string + serverAuthorization: string | null selectedRendererId: string queuedGraphics: [string, QueuedGraphic][] }