Sync credentials weren't cleared if username field was removed first
This commit is contained in:
parent
909b0fdf2c
commit
7ff2ddae89
1 changed files with 21 additions and 18 deletions
|
@ -1096,8 +1096,8 @@ Zotero.Sync.Server = new function () {
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_cachedCredentials[username]) {
|
if (_cachedCredentials.username == username && _cachedCredentials.password) {
|
||||||
return _cachedCredentials[username];
|
return _cachedCredentials.password;
|
||||||
}
|
}
|
||||||
|
|
||||||
Zotero.debug('Getting Zotero sync password');
|
Zotero.debug('Getting Zotero sync password');
|
||||||
|
@ -1117,7 +1117,10 @@ Zotero.Sync.Server = new function () {
|
||||||
// Find user from returned array of nsILoginInfo objects
|
// Find user from returned array of nsILoginInfo objects
|
||||||
for (var i = 0; i < logins.length; i++) {
|
for (var i = 0; i < logins.length; i++) {
|
||||||
if (logins[i].username == username) {
|
if (logins[i].username == username) {
|
||||||
_cachedCredentials[username] = logins[i].password;
|
_cachedCredentials = {
|
||||||
|
username: username,
|
||||||
|
password: logins[i].password
|
||||||
|
};
|
||||||
return logins[i].password;
|
return logins[i].password;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1128,26 +1131,23 @@ Zotero.Sync.Server = new function () {
|
||||||
this.__defineSetter__('password', function (password) {
|
this.__defineSetter__('password', function (password) {
|
||||||
_sessionID = null;
|
_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;
|
var username = this.username;
|
||||||
|
|
||||||
if (!username) {
|
if (!username) {
|
||||||
Zotero.debug('Username not set before setting Zotero.Sync.Server.password');
|
|
||||||
return;
|
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) {
|
if (password) {
|
||||||
var nsLoginInfo = new Components.Constructor("@mozilla.org/login-manager/loginInfo;1",
|
var nsLoginInfo = new Components.Constructor("@mozilla.org/login-manager/loginInfo;1",
|
||||||
Components.interfaces.nsILoginInfo, "init");
|
Components.interfaces.nsILoginInfo, "init");
|
||||||
|
@ -1156,7 +1156,10 @@ Zotero.Sync.Server = new function () {
|
||||||
var loginInfo = new nsLoginInfo(_loginManagerHost, _loginManagerURL,
|
var loginInfo = new nsLoginInfo(_loginManagerHost, _loginManagerURL,
|
||||||
null, username, password, "", "");
|
null, username, password, "", "");
|
||||||
loginManager.addLogin(loginInfo);
|
loginManager.addLogin(loginInfo);
|
||||||
_cachedCredentials[username] = password;
|
_cachedCredentials = {
|
||||||
|
username: username,
|
||||||
|
password: password
|
||||||
|
};
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue