From 4c581f90672efbfcd6181f69af4e3ad31654a578 Mon Sep 17 00:00:00 2001 From: Devin Buhl Date: Thu, 5 Oct 2017 18:44:03 -0400 Subject: [PATCH] Fix #275 - Add HTTP --basic-auth-{username,password} CLI flags (#444) --- app/src/main.js | 15 ++++++++++++++- docs/api.md | 10 ++++++++++ src/build/buildApp.js | 2 ++ src/cli.js | 2 ++ src/options/optionsMain.js | 2 ++ 5 files changed, 30 insertions(+), 1 deletion(-) diff --git a/app/src/main.js b/app/src/main.js index 87a63db..6475315 100644 --- a/app/src/main.js +++ b/app/src/main.js @@ -48,6 +48,14 @@ if (appArgs.diskCacheSize) { app.commandLine.appendSwitch('disk-cache-size', appArgs.diskCacheSize); } +if (appArgs.basicAuthUsername) { + app.commandLine.appendSwitch('basic-auth-username', appArgs.basicAuthUsername); +} + +if (appArgs.basicAuthPassword) { + app.commandLine.appendSwitch('basic-auth-password', appArgs.basicAuthPassword); +} + // do nothing for setDockBadge if not OSX let setDockBadge = () => {}; @@ -100,7 +108,12 @@ app.on('ready', () => { app.on('login', (event, webContents, request, authInfo, callback) => { // for http authentication event.preventDefault(); - createLoginWindow(callback); + + if (appArgs.basicAuthUsername !== null && appArgs.basicAuthPassword !== null) { + callback(appArgs.basicAuthUsername, appArgs.basicAuthPassword); + } else { + createLoginWindow(callback); + } }); if (appArgs.singleInstance) { diff --git a/docs/api.md b/docs/api.md index a43dc70..4606b5a 100644 --- a/docs/api.md +++ b/docs/api.md @@ -40,6 +40,8 @@ - [[zoom]](#zoom) - [[crash-reporter]](#crash-reporter) - [[single-instance]](#single-instance) + - [[basic-auth-username]](#basic-auth-username) + - [[basic-auth-password]](#basic-auth-username) - [Programmatic API](#programmatic-api) ## Command Line @@ -408,6 +410,14 @@ Sets a default zoom factor to be used when the app is opened, defaults to `1.0`. Prevents application from being run multiple times. If such an attempt occurs the already running instance is brought to front. +#### [basic-auth-username] + +``` +--basic-auth-username --basic-auth-password +``` + +Set basic http(s) auth via the command line to have the app automatically log you in to a protected site. Both fields are required if one is set. + #### [processEnvs] ``` diff --git a/src/build/buildApp.js b/src/build/buildApp.js index 5d4927a..4008db8 100644 --- a/src/build/buildApp.js +++ b/src/build/buildApp.js @@ -46,6 +46,8 @@ function selectAppArgs(options) { win32metadata: options.win32metadata, versionString: options.versionString, processEnvs: options.processEnvs, + basicAuthUsername: options.basicAuthUsername, + basicAuthPassword: options.basicAuthPassword, }; } diff --git a/src/cli.js b/src/cli.js index f3c6218..186f24d 100755 --- a/src/cli.js +++ b/src/cli.js @@ -82,6 +82,8 @@ if (require.main === module) { .option('--crash-reporter ', 'remote server URL to send crash reports') .option('--single-instance', 'allow only a single instance of the application') .option('--processEnvs ', 'a JSON string of key/value pairs to be set as environment variables before any browser windows are opened.', getProcessEnvs) + .option('--basic-auth-username ', 'basic http(s) auth username') + .option('--basic-auth-password ', 'basic http(s) auth password') .parse(process.argv); if (!process.argv.slice(2).length) { diff --git a/src/options/optionsMain.js b/src/options/optionsMain.js index d180681..3574219 100644 --- a/src/options/optionsMain.js +++ b/src/options/optionsMain.js @@ -66,6 +66,8 @@ export default function (inpOptions) { FileDescription: inpOptions.name, }, processEnvs: inpOptions.processEnvs, + basicAuthUsername: inpOptions.basicAuthUsername || null, + basicAuthPassword: inpOptions.basicAuthPassword || null, }; if (options.verbose) {