From dd0b43442c1642eb6db6fb6a7711eefe7a1119ef Mon Sep 17 00:00:00 2001 From: Matěj Cepl Date: Wed, 11 Apr 2012 02:41:20 +0200 Subject: Make the script bugs.eclipse.org compatible. Closes #120 --- lib/libbugzilla.js | 96 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 49 insertions(+), 47 deletions(-) (limited to 'lib') diff --git a/lib/libbugzilla.js b/lib/libbugzilla.js index e5d6e25..acb81e8 100644 --- a/lib/libbugzilla.js +++ b/lib/libbugzilla.js @@ -87,69 +87,70 @@ function getPassword(login, domain, callback) { "for accessing JSONRPC services"; var switchPrompt = "Do you want to switch off XML-RPC " + "for domain "; - var prefName = BTSPrefNS + "withoutPassowrd", prefValue = []; + var prefName = BTSPrefNS + "withoutPassword", prefValue = []; var retObject = { password: null, // password string or null if no password provided withoutPass: [] // whether user doesn't want to use password at all }; if (preferences.has(prefName)) { - prefValue = JSON.parse(preferences.get(prefName, null)); - debug("getPassword: prefValue = " + prefValue); - if ((prefValue === true) || (prefValue === false)) { - console.log("Clearing previous scheme of " + prefName + - " preference " + prefValue + "."); - preferences.set(prefName, JSON.stringify([])); - prefValue = []; - } + prefValue = JSON.parse(preferences.get(prefName, [])); + debug("getPassword: prefValue = " + prefValue.toSource()); } - if (prefValue.indexOf(domain) == -1) { - passUtils.search({ - username: login, - url: domain, - realm: BTSPassRealm, - onComplete: function onComplete(credList) { + // First try to find the password in the password manager + passUtils.search({ + username: login, + url: domain, + realm: BTSPassRealm, + onComplete: function onComplete(credList) { + console.log("found credList = " + credList); var credential = []; if (credList) { - credential = credList[0]; + credential = credList[0]; } - if (credential) { - // We found the password, just go ahead and use it - retObject.password = credential.password; - callback(retObject); + if (credential) { + // We found the password, just go ahead and use it + retObject.password = credential.password; + callback(retObject); + } + // If we don't have a password, is the domain forbidden? + // Don't use isInList ... we don't have it here. + else if (prefValue.indexOf(domain) == -1) { + debug("Domain " + domain + " is not forbidden!"); + // We don't have a stored password, ask for one + var passwordText = prompts.promptPassword(passPrompt); + if (passwordText && passwordText.length > 0) { + // Right, we've got it … store it and then use it. + retObject.password = passwordText; + passUtils.store({ + username: login, + password: passwordText, + url: domain, + realm: BTSPassRealm, + onComplete: function onComplete() { + callback(retObject); + } + }); } else { - // We don't have a stored password, ask for one - var passwordText = prompts.promptPassword(passPrompt); - if (passwordText && passwordText.length > 0) { - // Right, we've got it … store it and then use it. - retObject.password = passwordText; - passUtils.store({ - username: login, - password: passwordText, - url: domain, - realm: BTSPassRealm, - onComplete: function onComplete() { - callback(retObject); - } - }); - } - else { - // We don't have password, and user haven't entered one? - // Does he want to live passwordless for this domain? - var switchOff = prompts.promptYesNoCancel(switchPrompt + domain + "?"); - if (switchOff) { - prefValue.push(domain); - preferences.set(prefName, JSON.stringify(prefValue)); - } - retObject.withoutPass = prefValue; - callback(retObject); + // We don't have password, and user haven't entered one? + // Does he want to live passwordless for this domain? + var switchOff = prompts.promptYesNoCancel(switchPrompt + domain + "?"); + if (switchOff) { + prefValue.push(domain); + preferences.set(prefName, JSON.stringify(prefValue)); } + retObject.withoutPass = prefValue; + callback(retObject); } } - }); - } + else { + debug("Domain " + domain + " is forbidden!"); + callback(retObject); + } + } // onComplete + }); } // Change URL of the configuration JSON file @@ -337,6 +338,7 @@ function loginToAllBugzillas(callback) { debug("logResult = " + logResult.toSource()); loginCallsCounter--; debug("after decrease loginCallsCounter = " + loginCallsCounter); + debug("Logged as " + credential.username + " to " + credential.url); // When we complete all logins, execute the callback if (loginCallsCounter <= 0) { debug("All logins done!"); -- cgit