1
0
mirror of https://github.com/bitwarden/browser.git synced 2024-12-24 16:49:26 +01:00

Checking for equivalent domains from settings

This commit is contained in:
Kyle Spearrin 2017-01-14 13:43:59 -05:00
parent bb56f9ee47
commit 54119e1e94
5 changed files with 37 additions and 17 deletions

View File

@ -7,9 +7,9 @@ var cryptoService = new CryptoService(constantsService);
var tokenService = new TokenService(); var tokenService = new TokenService();
var apiService = new ApiService(tokenService); var apiService = new ApiService(tokenService);
var userService = new UserService(tokenService, apiService, cryptoService); var userService = new UserService(tokenService, apiService, cryptoService);
var loginService = new LoginService(cryptoService, userService, apiService);
var folderService = new FolderService(cryptoService, userService, apiService);
var settingsService = new SettingsService(userService); var settingsService = new SettingsService(userService);
var loginService = new LoginService(cryptoService, userService, apiService, settingsService);
var folderService = new FolderService(cryptoService, userService, apiService);
var syncService = new SyncService(loginService, folderService, userService, apiService, settingsService); var syncService = new SyncService(loginService, folderService, userService, apiService, settingsService);
var autofillService = new AutofillService(); var autofillService = new AutofillService();
var passwordGenerationService = new PasswordGenerationService(); var passwordGenerationService = new PasswordGenerationService();

View File

@ -41,17 +41,9 @@ angular
canAutofill = true; canAutofill = true;
}); });
var filteredLogins = []; $q.when(loginService.getAllDecryptedForDomain(domain)).then(function (logins) {
var loginPromise = $q.when(loginService.getAllDecrypted());
loginPromise.then(function (logins) {
for (var i = 0; i < logins.length; i++) {
if (logins[i].domain && logins[i].domain === domain) {
filteredLogins.push(logins[i]);
}
}
$scope.loaded = true; $scope.loaded = true;
$scope.logins = filteredLogins; $scope.logins = logins;
}); });
}); });
} }

View File

@ -1,7 +1,8 @@
function LoginService(cryptoService, userService, apiService) { function LoginService(cryptoService, userService, apiService, settingsService) {
this.cryptoService = cryptoService; this.cryptoService = cryptoService;
this.userService = userService; this.userService = userService;
this.apiService = apiService; this.apiService = apiService;
this.settingsService = settingsService;
this.decryptedLoginCache = null; this.decryptedLoginCache = null;
initLoginService(); initLoginService();
@ -133,10 +134,29 @@ function initLoginService() {
LoginService.prototype.getAllDecryptedForDomain = function (domain) { LoginService.prototype.getAllDecryptedForDomain = function (domain) {
var self = this; var self = this;
return self.getAllDecrypted().then(function (logins) { var eqDomainsPromise = self.settingsService.getEquivalentDomains().then(function (eqDomains) {
var matchingDomains = [];
for (var i = 0; i < eqDomains.length; i++) {
for (var j = 0; j < eqDomains[i].length; j++) {
if (eqDomains[i][j] === domain) {
matchingDomains = matchingDomains.concat(eqDomains[i]);
}
}
}
return matchingDomains;
});
var loginsPromise = self.getAllDecrypted().then(function (logins) {
return logins;
});
return Q.all([eqDomainsPromise, loginsPromise]).then(function (result) {
var matchingDomains = result[0];
var logins = result[1];
var loginsToReturn = []; var loginsToReturn = [];
for (var i = 0; i < logins.length; i++) { for (var i = 0; i < logins.length; i++) {
if (logins[i].domain === domain) { if (logins[i].domain && matchingDomains.indexOf(logins[i].domain) >= 0) {
loginsToReturn.push(logins[i]); loginsToReturn.push(logins[i]);
} }
} }

View File

@ -32,7 +32,13 @@ function initSettingsService() {
}; };
SettingsService.prototype.getEquivalentDomains = function (callback) { SettingsService.prototype.getEquivalentDomains = function (callback) {
getSettingsKey(this, 'equivalentDomains', callback); var deferred = Q.defer();
getSettingsKey(this, 'equivalentDomains', function (domains) {
deferred.resolve(domains);
});
return deferred.promise;
}; };
function getSettingsKey(self, key, callback) { function getSettingsKey(self, key, callback) {

View File

@ -188,7 +188,9 @@ function initSyncService() {
} }
if (response && response.globalEquivalentDomains) { if (response && response.globalEquivalentDomains) {
for (var i = 0; i < response.globalEquivalentDomains.length; i++) { for (var i = 0; i < response.globalEquivalentDomains.length; i++) {
eqDomains = eqDomains.concat(response.globalEquivalentDomains[i].domains); if (response.globalEquivalentDomains[i].domains.length) {
eqDomains.push(response.globalEquivalentDomains[i].domains);
}
} }
} }