commit 7ff2ddae8938a78be0b1b4771d46dc3de89a28f3
parent 909b0fdf2c789ffe880106a5a7ecb21e285fa660
Author: Dan Stillman <dstillman@zotero.org>
Date: Thu, 30 Sep 2010 18:16:40 +0000
Sync credentials weren't cleared if username field was removed first
Diffstat:
1 file changed, 19 insertions(+), 16 deletions(-)
diff --git a/chrome/content/zotero/xpcom/sync.js b/chrome/content/zotero/xpcom/sync.js
@@ -1096,8 +1096,8 @@ Zotero.Sync.Server = new function () {
return '';
}
- if (_cachedCredentials[username]) {
- return _cachedCredentials[username];
+ if (_cachedCredentials.username == username && _cachedCredentials.password) {
+ return _cachedCredentials.password;
}
Zotero.debug('Getting Zotero sync password');
@@ -1117,7 +1117,10 @@ Zotero.Sync.Server = new function () {
// Find user from returned array of nsILoginInfo objects
for (var i = 0; i < logins.length; i++) {
if (logins[i].username == username) {
- _cachedCredentials[username] = logins[i].password;
+ _cachedCredentials = {
+ username: username,
+ password: logins[i].password
+ };
return logins[i].password;
}
}
@@ -1128,26 +1131,23 @@ Zotero.Sync.Server = new function () {
this.__defineSetter__('password', function (password) {
_sessionID = null;
- var username = this.username;
-
- if (!username) {
- Zotero.debug('Username not set before setting Zotero.Sync.Server.password');
- return;
- }
-
- delete _cachedCredentials[username];
-
var loginManager = Components.classes["@mozilla.org/login-manager;1"]
.getService(Components.interfaces.nsILoginManager);
-
var logins = loginManager.findLogins({}, _loginManagerHost, _loginManagerURL, null);
-
for (var i = 0; i < logins.length; i++) {
- Zotero.debug('Clearing Zotero sync passwords');
+ Zotero.debug('Clearing Zotero sync credentials');
loginManager.removeLogin(logins[i]);
break;
}
+ _cachedCredentials = {};
+
+ var username = this.username;
+
+ if (!username) {
+ return;
+ }
+
if (password) {
var nsLoginInfo = new Components.Constructor("@mozilla.org/login-manager/loginInfo;1",
Components.interfaces.nsILoginInfo, "init");
@@ -1156,7 +1156,10 @@ Zotero.Sync.Server = new function () {
var loginInfo = new nsLoginInfo(_loginManagerHost, _loginManagerURL,
null, username, password, "", "");
loginManager.addLogin(loginInfo);
- _cachedCredentials[username] = password;
+ _cachedCredentials = {
+ username: username,
+ password: password
+ };
}
});