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:
parent
e288ade266
commit
e1ed7587dc
|
@ -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();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -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',
|
||||||
|
|
Loading…
Reference in New Issue
Block a user