aboutsummaryrefslogtreecommitdiffstats
path: root/lib/bzpage.js
diff options
context:
space:
mode:
authorMatěj Cepl <mcepl@redhat.com>2010-07-16 04:25:30 +0200
committerMatěj Cepl <mcepl@redhat.com>2010-07-16 04:25:30 +0200
commit3f70ba468a91e0f5abe20034dd50e3c63a6fcb1a (patch)
tree88fe917ec4e22b26134546249a9f51cbe1b85071 /lib/bzpage.js
parent91aac059810fec3d849bb48eb51f55e64b1cc32b (diff)
downloadbugzilla-triage-3f70ba468a91e0f5abe20034dd50e3c63a6fcb1a.tar.gz
Use Firefox nsILoginManager to store password and make it optional.0.13
Fixes #16.
Diffstat (limited to 'lib/bzpage.js')
-rw-r--r--lib/bzpage.js33
1 files changed, 25 insertions, 8 deletions
diff --git a/lib/bzpage.js b/lib/bzpage.js
index 3ac61d6..45e1196 100644
--- a/lib/bzpage.js
+++ b/lib/bzpage.js
@@ -3,6 +3,7 @@
// http://www.opensource.org/licenses/mit-license.php
"use strict";
var util = require("util");
+var passUtils = require("passwords");
var apiUtils = require("api-utils");
var simpleStorage = require("simple-storage");
var preferences = require("preferences-service");
@@ -13,6 +14,7 @@ var NumberOfFrames = 7;
var bugURL = "https://bugzilla.redhat.com/show_bug.cgi?id=";
var BTSPrefNS = "bugzilla-triage.setting.";
exports.BTSPrefNS = BTSPrefNS;
+var BTSPassRealm = "BTSXMLRPCPass";
// ====================================================================================
// BZPage's methods
@@ -679,15 +681,30 @@ BZPage.prototype.getAttachments = function getAttachments () {
*
* @return String with the password
*/
-BZPage.prototype.getPassword = function getPassword () {
- var prefName = BTSPrefNS+"BZpassword";
- if (preferences.isSet(prefName)) {
- return preferences.get(prefName,undefined);
- } else {
- var passwordText = util.getPassword();
- if (passwordText) {
- preferences.set(prefName, passwordText);
+BZPage.prototype.getPassword = function getPassword (login) {
+ var passPrompt = "Enter your Bugzilla password for fixing MIME attachment types";
+ var switchPrompt = "Do you want to switch off features requiring password completely?";
+ var prefName = BTSPrefNS+"withoutPassowrd";
+ var loc = this.win.location;
+ var domain = loc.protocol + "//" + loc.hostname;
+
+ var pass = passUtils.getPassword(login, domain, BTSPassRealm);
+ // pass === null means no appropriate password in the storage
+ if (!preferences.get(prefName,false) && (pass === null)) {
+ var passwordText = util.getPassword(passPrompt);
+ if (passwordText && passwordText.length > 0) {
+ passUtils.setLogin(login, passwordText, domain,
+ BTSPassRealm);
+ return passwordText;
+ } else {
+ var switchOff = util.promptOKNoCancel(switchPrompt);
+ if (switchOff) {
+ preferences.set(prefName,true);
+ }
+ return null;
}
+ } else {
+ return pass;
}
};