SDA-3201 Removing Electron from user-agent - Microsoft Azure not supporting it for SSSO

This commit is contained in:
sbenmoussati 2021-06-08 18:41:15 +02:00
parent 0995633c37
commit d535e12ee1
3 changed files with 35 additions and 7 deletions

View File

@ -1,5 +1,6 @@
{ {
"url":"https://my.symphony.com", "url":"https://my.symphony.com",
"overrideUserAgent": false,
"minimizeOnClose" : "ENABLED", "minimizeOnClose" : "ENABLED",
"launchOnStartup" : "ENABLED", "launchOnStartup" : "ENABLED",
"alwaysOnTop" : "DISABLED", "alwaysOnTop" : "DISABLED",

View File

@ -47,6 +47,7 @@ export interface IGlobalConfig {
contextOriginUrl: string; contextOriginUrl: string;
url: string; url: string;
contextIsolation: boolean; contextIsolation: boolean;
overrideUserAgent?: boolean;
} }
export interface ICloudConfig { export interface ICloudConfig {

View File

@ -167,6 +167,7 @@ export class WindowHandler {
'url', 'url',
'contextIsolation', 'contextIsolation',
'contextOriginUrl', 'contextOriginUrl',
'overrideUserAgent',
]); ]);
this.userConfig = config.getUserConfigFields(['url']); this.userConfig = config.getUserConfigFields(['url']);
@ -385,7 +386,8 @@ export class WindowHandler {
cleanAppCacheOnCrash(this.mainWindow); cleanAppCacheOnCrash(this.mainWindow);
// loads the main window with url from config/cmd line // loads the main window with url from config/cmd line
logger.info(`Loading main window with url ${this.url}`); logger.info(`Loading main window with url ${this.url}`);
this.mainWindow.loadURL(this.url); const userAgent = this.getUserAgent(this.mainWindow);
this.mainWindow.loadURL(this.url, { userAgent });
// check for build expiry in case of test builds // check for build expiry in case of test builds
this.checkExpiry(this.mainWindow); this.checkExpiry(this.mainWindow);
// update version info from server // update version info from server
@ -456,9 +458,9 @@ export class WindowHandler {
`Looks like about:blank got loaded which may lead to blank screen`, `Looks like about:blank got loaded which may lead to blank screen`,
); );
logger.info(`Reloading the app to check if it resolves the issue`); logger.info(`Reloading the app to check if it resolves the issue`);
await this.mainWindow.loadURL( const url = this.userConfig.url || this.globalConfig.url;
this.userConfig.url || this.globalConfig.url, const userAgent = this.getUserAgent(this.mainWindow);
); await this.mainWindow.loadURL(url, { userAgent });
return; return;
} }
logger.info('window-handler: did-finish-load, url: ' + this.url); logger.info('window-handler: did-finish-load, url: ' + this.url);
@ -1757,8 +1759,10 @@ export class WindowHandler {
logger.info( logger.info(
`window-utils: user has logged in, getting back to Symphony app`, `window-utils: user has logged in, getting back to Symphony app`,
); );
const userAgent = this.getUserAgent(this.mainWindow);
this.mainWindow.loadURL( this.mainWindow.loadURL(
this.url || this.userConfig.url || this.globalConfig.url, this.url || this.userConfig.url || this.globalConfig.url,
{ userAgent },
); );
return; return;
} }
@ -1766,7 +1770,10 @@ export class WindowHandler {
logger.info( logger.info(
`window-utils: user hasn't logged in yet, loading login page again`, `window-utils: user hasn't logged in yet, loading login page again`,
); );
this.mainWindow.loadURL(this.userConfig.url || this.globalConfig.url); const userAgent = this.getUserAgent(this.mainWindow);
this.mainWindow.loadURL(this.userConfig.url || this.globalConfig.url, {
userAgent,
});
} }
} }
@ -1785,7 +1792,8 @@ export class WindowHandler {
const reloadUrl = const reloadUrl =
webContentsUrl || this.userConfig.url || this.globalConfig.url; webContentsUrl || this.userConfig.url || this.globalConfig.url;
logger.info(`window-handler: Trying to reload ${reloadUrl}.`); logger.info(`window-handler: Trying to reload ${reloadUrl}.`);
await this.mainWindow.loadURL(reloadUrl); const userAgent = this.getUserAgent(this.mainWindow);
await this.mainWindow.loadURL(reloadUrl, { userAgent });
return; return;
} }
logger.error( logger.error(
@ -1971,7 +1979,8 @@ export class WindowHandler {
this.url = this.globalConfig.url + `?x-km-csrf-token=${csrfToken}`; this.url = this.globalConfig.url + `?x-km-csrf-token=${csrfToken}`;
} }
this.execCmd(this.screenShareIndicatorFrameUtil, []); this.execCmd(this.screenShareIndicatorFrameUtil, []);
await this.mainWindow.loadURL(this.url); const userAgent = this.getUserAgent(this.mainWindow);
await this.mainWindow.loadURL(this.url, { userAgent });
} catch (e) { } catch (e) {
logger.error( logger.error(
`window-handler: failed to switch client because of error ${e}`, `window-handler: failed to switch client because of error ${e}`,
@ -2053,6 +2062,23 @@ export class WindowHandler {
return { ...defaultWindowOpts, ...windowOpts }; return { ...defaultWindowOpts, ...windowOpts };
} }
/**
* getUserAgent retrieves current window user-agent and updates it
* depending on global config setup
* Electron user-agent is removed due to Microsoft Azure not supporting SSO if found - cf SDA-3201
* @param mainWindow
* @returns updated user-agents
*/
private getUserAgent(mainWindow: ICustomBrowserWindow): string {
const doOverrideUserAgents = !!this.globalConfig.overrideUserAgent;
let userAgent = mainWindow.webContents.getUserAgent();
if (doOverrideUserAgents) {
const electronUserAgentRegex = /(Electron[0-9\/.]*)/;
userAgent = userAgent.replace(electronUserAgentRegex, '');
}
return userAgent;
}
} }
const windowHandler = new WindowHandler(); const windowHandler = new WindowHandler();