From 0574c8ed9856b28e8a000624f8aad42ca4ec9ecb Mon Sep 17 00:00:00 2001 From: Adamo Date: Fri, 6 Dec 2024 09:20:14 +0100 Subject: [PATCH] [DURACOM-312] set the X-On-Behalf-Of header with impersonatingID in FileUploader. (cherry picked from commit 727bcdc2cb23ae7fcff1d9ddfa794f872f1d1b8c) --- .../shared/upload/uploader/uploader.component.ts | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/app/shared/upload/uploader/uploader.component.ts b/src/app/shared/upload/uploader/uploader.component.ts index fbafe811eb..5bb8a44a77 100644 --- a/src/app/shared/upload/uploader/uploader.component.ts +++ b/src/app/shared/upload/uploader/uploader.component.ts @@ -47,6 +47,11 @@ import { UploaderProperties } from './uploader-properties.model'; }) export class UploaderComponent implements OnInit, AfterViewInit { + /** + * Header key to impersonate a user + */ + private readonly ON_BEHALF_HEADER = 'X-On-Behalf-Of'; + /** * The message to show when drag files on the drop zone */ @@ -162,7 +167,13 @@ export class UploaderComponent implements OnInit, AfterViewInit { item.url = this.uploader.options.url; } // Ensure the current XSRF token is included in every upload request (token may change between items uploaded) - this.uploader.options.headers = [{ name: XSRF_REQUEST_HEADER, value: this.tokenExtractor.getToken() }]; + // Ensure the behalf header is set if impersonating + this.uploader.options.headers = [ + { name: XSRF_REQUEST_HEADER, value: this.tokenExtractor.getToken() }, + ...(hasValue(this.uploadFilesOptions.impersonatingID) + ? [{ name: this.ON_BEHALF_HEADER, value: this.uploadFilesOptions.impersonatingID }] + : []) + ]; this.onBeforeUpload(); this.isOverDocumentDropZone = observableOf(false); };