1
0
mirror of https://github.com/bitwarden/browser.git synced 2025-02-17 01:31:25 +01:00

added ability to pass and parse twofactor provider

This commit is contained in:
Kyle Spearrin 2017-06-26 09:55:07 -04:00
parent f6fc8a4a0f
commit 981fd22ce5
4 changed files with 18 additions and 16 deletions

View File

@ -13,11 +13,11 @@ var FolderRequest = function (folder) {
this.name = folder.name ? folder.name.encryptedString : null; this.name = folder.name ? folder.name.encryptedString : null;
}; };
var TokenRequest = function (email, masterPasswordHash, token, device) { var TokenRequest = function (email, masterPasswordHash, provider, token, device) {
this.email = email; this.email = email;
this.masterPasswordHash = masterPasswordHash; this.masterPasswordHash = masterPasswordHash;
this.token = token; this.token = token;
this.provider = 0; // 0 = Authenticator this.provider = provider;
this.device = null; this.device = null;
if (device) { if (device) {
this.device = device; this.device = device;

View File

@ -32,10 +32,10 @@
return; return;
} }
$scope.loginPromise = authService.logIn(model.email, model.masterPassword, null); $scope.loginPromise = authService.logIn(model.email, model.masterPassword, null, null);
$scope.loginPromise.then(function (twoFactor) { $scope.loginPromise.then(function (response) {
if (twoFactor) { if (response.twoFactor) {
$analytics.eventTrack('Logged In To Two-step'); $analytics.eventTrack('Logged In To Two-step');
$state.go('twoFactor', { $state.go('twoFactor', {
animation: 'in-slide-left', animation: 'in-slide-left',

View File

@ -18,7 +18,7 @@
return; return;
} }
$scope.loginPromise = authService.logIn(email, masterPassword, model.code); $scope.loginPromise = authService.logIn(email, masterPassword, 0, model.code);
$scope.loginPromise.then(function () { $scope.loginPromise.then(function () {
$analytics.eventTrack('Logged In From Two-step'); $analytics.eventTrack('Logged In From Two-step');
$state.go('tabs.vault', { animation: 'in-slide-left', syncOnLoad: true }); $state.go('tabs.vault', { animation: 'in-slide-left', syncOnLoad: true });

View File

@ -5,14 +5,14 @@
folderService, settingsService, syncService, appIdService, utilsService) { folderService, settingsService, syncService, appIdService, utilsService) {
var _service = {}; var _service = {};
_service.logIn = function (email, masterPassword, twoFactorToken) { _service.logIn = function (email, masterPassword, twoFactorProvider, twoFactorToken) {
email = email.toLowerCase(); email = email.toLowerCase();
var key = cryptoService.makeKey(masterPassword, email); var key = cryptoService.makeKey(masterPassword, email);
var deferred = $q.defer(); var deferred = $q.defer();
cryptoService.hashPassword(masterPassword, key, function (hashedPassword) { cryptoService.hashPassword(masterPassword, key, function (hashedPassword) {
appIdService.getAppId(function (appId) { appIdService.getAppId(function (appId) {
var deviceRequest = new DeviceRequest(appId, utilsService); var deviceRequest = new DeviceRequest(appId, utilsService);
var request = new TokenRequest(email, hashedPassword, twoFactorToken, deviceRequest); var request = new TokenRequest(email, hashedPassword, twoFactorProvider, twoFactorToken, deviceRequest);
apiService.postIdentityToken(request, function (response) { apiService.postIdentityToken(request, function (response) {
// success // success
@ -27,15 +27,22 @@
cryptoService.setEncKey(response.key).then(function () { cryptoService.setEncKey(response.key).then(function () {
return cryptoService.setEncPrivateKey(response.privateKey); return cryptoService.setEncPrivateKey(response.privateKey);
}).then(function () { }).then(function () {
loggedIn(deferred); chrome.runtime.sendMessage({ command: 'loggedIn' });
deferred.resolve({
twoFactor: false,
twoFactorProviders: null
});
}); });
}); });
}); });
}); });
}); });
}, function () { }, function (providers) {
// two factor required // two factor required
deferred.resolve(true); deferred.resolve({
twoFactor: true,
twoFactorProviders: providers
});
}, function (error) { }, function (error) {
// error // error
deferred.reject(error); deferred.reject(error);
@ -51,10 +58,5 @@
callback(); callback();
}; };
function loggedIn(deferred) {
chrome.runtime.sendMessage({ command: 'loggedIn' });
deferred.resolve(false);
}
return _service; return _service;
}); });