1
0
mirror of https://github.com/bitwarden/browser.git synced 2024-08-09 20:22:51 +02:00

pass logout function to api service rather than relying on messaging

This commit is contained in:
Kyle Spearrin 2017-01-21 20:00:25 -05:00
parent e288ade266
commit e1ed7587dc
2 changed files with 46 additions and 35 deletions

View File

@ -5,7 +5,7 @@ var constantsService = new ConstantsService();
var utilsService = new UtilsService(); var utilsService = new UtilsService();
var cryptoService = new CryptoService(constantsService); var cryptoService = new CryptoService(constantsService);
var tokenService = new TokenService(); var tokenService = new TokenService();
var apiService = new ApiService(tokenService); var apiService = new ApiService(tokenService, logout);
var userService = new UserService(tokenService, apiService, cryptoService); var userService = new UserService(tokenService, apiService, cryptoService);
var settingsService = new SettingsService(userService); var settingsService = new SettingsService(userService);
var loginService = new LoginService(cryptoService, userService, apiService, settingsService); var loginService = new LoginService(cryptoService, userService, apiService, settingsService);
@ -39,10 +39,7 @@ chrome.runtime.onMessage.addListener(function (msg, sender, sendResponse) {
refreshBadgeAndMenu(); refreshBadgeAndMenu();
} }
else if (msg.command === 'logout') { else if (msg.command === 'logout') {
logout(msg.expired, function () { logout(msg.expired, function () { });
setIcon();
refreshBadgeAndMenu();
});
} }
else if (msg.command === 'syncCompleted' && msg.successfully) { else if (msg.command === 'syncCompleted' && msg.successfully) {
setTimeout(refreshBadgeAndMenu, 2000); setTimeout(refreshBadgeAndMenu, 2000);
@ -627,6 +624,8 @@ function logout(expired, callback) {
loginService.clear(userId, function () { loginService.clear(userId, function () {
folderService.clear(userId, function () { folderService.clear(userId, function () {
chrome.runtime.sendMessage({ command: 'doneLoggingOut', expired: expired }); chrome.runtime.sendMessage({ command: 'doneLoggingOut', expired: expired });
setIcon();
refreshBadgeAndMenu();
callback(); callback();
}); });
}); });

View File

@ -1,7 +1,8 @@
function ApiService(tokenService) { function ApiService(tokenService, logoutCallback) {
//this.baseUrl = 'http://localhost:4000'; //this.baseUrl = 'http://localhost:4000';
this.baseUrl = 'https://api.bitwarden.com'; this.baseUrl = 'https://api.bitwarden.com';
this.tokenService = tokenService; this.tokenService = tokenService;
this.logoutCallback = logoutCallback;
initApiService(); initApiService();
}; };
@ -46,11 +47,11 @@ function initApiService() {
success(response); success(response);
}, },
error: function (jqXHR, textStatus, errorThrown) { error: function (jqXHR, textStatus, errorThrown) {
handleError(error, jqXHR); handleError(error, jqXHR, false, self);
} }
}); });
}, function (jqXHR) { }, function (jqXHR) {
handleError(error, jqXHR, true); handleError(error, jqXHR, true, self);
}); });
}; };
@ -65,11 +66,11 @@ function initApiService() {
success(new ProfileResponse(response)); success(new ProfileResponse(response));
}, },
error: function (jqXHR, textStatus, errorThrown) { error: function (jqXHR, textStatus, errorThrown) {
handleError(error, jqXHR); handleError(error, jqXHR, false, self);
} }
}); });
}, function (jqXHR) { }, function (jqXHR) {
handleError(error, jqXHR, true); handleError(error, jqXHR, true, self);
}); });
}; };
@ -85,7 +86,7 @@ function initApiService() {
success(); success();
}, },
error: function (jqXHR, textStatus, errorThrown) { error: function (jqXHR, textStatus, errorThrown) {
handleError(error, jqXHR); handleError(error, jqXHR, false, self);
} }
}); });
}; };
@ -102,7 +103,7 @@ function initApiService() {
success(); success();
}, },
error: function (jqXHR, textStatus, errorThrown) { error: function (jqXHR, textStatus, errorThrown) {
handleError(error, jqXHR); handleError(error, jqXHR, false, self);
} }
}); });
}; };
@ -120,11 +121,11 @@ function initApiService() {
success(new DomainsResponse(response)); success(new DomainsResponse(response));
}, },
error: function (jqXHR, textStatus, errorThrown) { error: function (jqXHR, textStatus, errorThrown) {
handleError(error, jqXHR); handleError(error, jqXHR, false, self);
} }
}); });
}, function (jqXHR) { }, function (jqXHR) {
handleError(error, jqXHR, true); handleError(error, jqXHR, true, self);
}); });
}; };
@ -141,11 +142,11 @@ function initApiService() {
success(new LoginResponse(response)); success(new LoginResponse(response));
}, },
error: function (jqXHR, textStatus, errorThrown) { error: function (jqXHR, textStatus, errorThrown) {
handleError(error, jqXHR); handleError(error, jqXHR, false, self);
} }
}); });
}, function (jqXHR) { }, function (jqXHR) {
handleError(error, jqXHR, true); handleError(error, jqXHR, true, self);
}); });
}; };
@ -162,11 +163,11 @@ function initApiService() {
success(new LoginResponse(response)); success(new LoginResponse(response));
}, },
error: function (jqXHR, textStatus, errorThrown) { error: function (jqXHR, textStatus, errorThrown) {
handleError(error, jqXHR); handleError(error, jqXHR, false, self);
} }
}); });
}, function (jqXHR) { }, function (jqXHR) {
handleError(error, jqXHR, true); handleError(error, jqXHR, true, self);
}); });
}; };
@ -183,11 +184,11 @@ function initApiService() {
success(new LoginResponse(response)); success(new LoginResponse(response));
}, },
error: function (jqXHR, textStatus, errorThrown) { error: function (jqXHR, textStatus, errorThrown) {
handleError(error, jqXHR); handleError(error, jqXHR, false, self);
} }
}); });
}, function (jqXHR) { }, function (jqXHR) {
handleError(error, jqXHR, true); handleError(error, jqXHR, true, self);
}); });
}; };
@ -204,12 +205,12 @@ function initApiService() {
success(new FolderResponse(response)); success(new FolderResponse(response));
}, },
error: function (jqXHR, textStatus, errorThrown) { error: function (jqXHR, textStatus, errorThrown) {
handleError(error, jqXHR); handleError(error, jqXHR, false, self);
} }
}); });
}, function (jqXHR) { }, function (jqXHR) {
handleError(error, jqXHR, true); handleError(error, jqXHR, true, self);
}); });
}; };
ApiService.prototype.postFolder = function (folderRequest, success, error) { ApiService.prototype.postFolder = function (folderRequest, success, error) {
@ -225,11 +226,11 @@ function initApiService() {
success(new FolderResponse(response)); success(new FolderResponse(response));
}, },
error: function (jqXHR, textStatus, errorThrown) { error: function (jqXHR, textStatus, errorThrown) {
handleError(error, jqXHR); handleError(error, jqXHR, false, self);
} }
}); });
}, function (jqXHR) { }, function (jqXHR) {
handleError(error, jqXHR, true); handleError(error, jqXHR, true, self);
}); });
}; };
@ -246,11 +247,11 @@ function initApiService() {
success(new FolderResponse(response)); success(new FolderResponse(response));
}, },
error: function (jqXHR, textStatus, errorThrown) { error: function (jqXHR, textStatus, errorThrown) {
handleError(error, jqXHR); handleError(error, jqXHR, false, self);
} }
}); });
}, function (jqXHR) { }, function (jqXHR) {
handleError(error, jqXHR, true); handleError(error, jqXHR, true, self);
}); });
}; };
@ -267,11 +268,11 @@ function initApiService() {
success(new CipherResponse(response)); success(new CipherResponse(response));
}, },
error: function (jqXHR, textStatus, errorThrown) { error: function (jqXHR, textStatus, errorThrown) {
handleError(error, jqXHR); handleError(error, jqXHR, false, self);
} }
}); });
}, function (jqXHR) { }, function (jqXHR) {
handleError(error, jqXHR, true); handleError(error, jqXHR, true, self);
}); });
}; };
@ -291,11 +292,11 @@ function initApiService() {
success(new ListResponse(data)); success(new ListResponse(data));
}, },
error: function (jqXHR, textStatus, errorThrown) { error: function (jqXHR, textStatus, errorThrown) {
handleError(error, jqXHR); handleError(error, jqXHR, false, self);
} }
}); });
}, function (jqXHR) { }, function (jqXHR) {
handleError(error, jqXHR, true); handleError(error, jqXHR, true, self);
}); });
}; };
@ -310,19 +311,25 @@ function initApiService() {
success(); success();
}, },
error: function (jqXHR, textStatus, errorThrown) { error: function (jqXHR, textStatus, errorThrown) {
handleError(error, jqXHR); handleError(error, jqXHR, false, self);
} }
}); });
}, function (jqXHR) { }, function (jqXHR) {
handleError(error, jqXHR, true); handleError(error, jqXHR, true, self);
}); });
}; };
// Helpers // Helpers
function handleError(errorCallback, jqXHR, tokenError) { function handleError(errorCallback, jqXHR, tokenError, self) {
if (tokenError || jqXHR.status === 401 || jqXHR.status === 403) { if (tokenError || jqXHR.status === 401 || jqXHR.status === 403) {
chrome.runtime.sendMessage({ command: 'logout', expired: true }); if (self && self.logoutCallback) {
self.logoutCallback(true, function () { })
}
else {
chrome.runtime.sendMessage({ command: 'logout', expired: true });
}
return; return;
} }
@ -334,6 +341,11 @@ function initApiService() {
self.tokenService.getToken(function (accessToken) { self.tokenService.getToken(function (accessToken) {
if (self.tokenService.tokenNeedsRefresh()) { if (self.tokenService.tokenNeedsRefresh()) {
self.tokenService.getRefreshToken(function (refreshToken) { self.tokenService.getRefreshToken(function (refreshToken) {
if (!refreshToken || refreshToken === '') {
deferred.reject();
return;
}
$.ajax({ $.ajax({
type: 'POST', type: 'POST',
url: self.baseUrl + '/connect/token', url: self.baseUrl + '/connect/token',