bitwarden-estensione-browser/src/popup/app/services/loginService.js

68 lines
2.3 KiB
JavaScript
Raw Normal View History

2016-09-03 06:03:13 +02:00
angular
.module('bit.services')
.factory('loginService', function (cryptoService, apiService, apiService, userService, tokenService, $q) {
2016-09-03 06:03:13 +02:00
var _service = {};
_service.logIn = function (email, masterPassword) {
var key = cryptoService.makeKey(masterPassword, email);
2016-09-05 06:03:49 +02:00
cryptoService.hashPassword(masterPassword, key, function (hashedPassword) {
var request = new TokenRequest(email, hashedPassword);
2016-09-03 06:03:13 +02:00
2016-09-05 06:03:49 +02:00
var deferred = $q.defer();
apiService.postToken(request, function (response) {
if (!response || !response.token) {
return;
}
2016-09-03 06:03:13 +02:00
2016-09-05 06:03:49 +02:00
tokenService.setToken(response.token, function () {
cryptoService.setKey(key, function () {
userService.setUserProfile(response.profile, function () {
deferred.resolve(response);
});
2016-09-03 06:03:13 +02:00
});
});
2016-09-05 06:03:49 +02:00
}, function (error) {
deferred.reject(error);
2016-09-03 06:03:13 +02:00
});
2016-09-05 06:03:49 +02:00
return deferred.promise;
});
2016-09-03 06:03:13 +02:00
};
_service.logInTwoFactor = function (code, provider) {
var request = {
code: code,
provider: provider
};
var deferred = $q.defer();
apiService.auth.tokenTwoFactor(request, function (response) {
if (!response || !response.Token) {
return;
}
tokenService.setToken(response.Token, function () {
userService.setUserProfile(response.Profile, function () {
deferred.resolve(response);
});
});
}, function (error) {
deferred.reject(error);
});
return deferred.promise;
};
_service.logOut = function (callback) {
2016-09-03 06:03:13 +02:00
tokenService.clearToken(function () {
cryptoService.clearKey(function () {
userService.clearUserProfile();
callback();
2016-09-03 06:03:13 +02:00
});
});
};
return _service;
});