Sync credentials weren't cleared if username field was removed first

This commit is contained in:
Dan Stillman 2010-09-30 18:16:40 +00:00
parent 909b0fdf2c
commit 7ff2ddae89

View file

@ -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 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 credentials');
loginManager.removeLogin(logins[i]);
break;
}
_cachedCredentials = {};
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');
loginManager.removeLogin(logins[i]);
break;
}
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
};
}
});